Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加带有自动完成功能的谷歌地图搜索栏_Javascript_Jquery_Google Maps_Google Maps Api 3_Google Maps Markers - Fatal编程技术网

Javascript 添加带有自动完成功能的谷歌地图搜索栏

Javascript 添加带有自动完成功能的谷歌地图搜索栏,javascript,jquery,google-maps,google-maps-api-3,google-maps-markers,Javascript,Jquery,Google Maps,Google Maps Api 3,Google Maps Markers,下面是我在网站上使用的所有Javascript函数。基本上,load函数是调用和处理来自PHP数据库的数据,因此我在那里创建了一个映射,并在那里进行处理。但是,我正在尝试向地图添加搜索栏,当前它在选择约束时刷新地图,搜索框从地图的左上角消失。再次看到它的唯一方法是刷新页面。它能够调出自动完成建议,并在所述位置上放置一个标记,并且可以选择约束来更改地图并在那里放置更多标记。但是,当拾取约束时,搜索框消失,地图位置也会在地图中更改。是否需要在地图中包含搜索框,以便在指定位置放置标记,并在从PHP传递

下面是我在网站上使用的所有Javascript函数。基本上,load函数是调用和处理来自PHP数据库的数据,因此我在那里创建了一个映射,并在那里进行处理。但是,我正在尝试向地图添加搜索栏,当前它在选择约束时刷新地图,搜索框从地图的左上角消失。再次看到它的唯一方法是刷新页面。它能够调出自动完成建议,并在所述位置上放置一个标记,并且可以选择约束来更改地图并在那里放置更多标记。但是,当拾取约束时,搜索框消失,地图位置也会在地图中更改。是否需要在地图中包含搜索框,以便在指定位置放置标记,并在从PHP传递数据以在地图上放置更多标记时将该视图保留在该位置?我应该合并加载和初始化功能吗?帮助将非常感谢从这个第一次海报

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?
v=3.exp&signed_in=true&libraries=places"></script>
<script type="text/javascript">

var customIcons = {
  restaurant: {
    icon: 'http://labs.google.com/ridefinder/images/mm_20_blue.png'
  },
  bar: {
    icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png'
  }
};

function load() {

var markers = [];
var map = new google.maps.Map(document.getElementById("map"), {
    center: new google.maps.LatLng(39.166531, -86.528549),
    zoom: 19,
    mapTypeId: 'roadmap'
        });

var passtypevalue = document.forms[0].passes.value;
var distancevalue = document.forms[0].distance.value;
var freevalue = document.forms[0].free.checked;
var metersvalue = document.forms[0].meters.checked;
var garagevalue = document.forms[0].garage.checked;
var campuspassvalue = document.forms[0].campuspass.checked;
var residentpassvalue = document.forms[0].residentpass.checked;

var infoWindow = new google.maps.InfoWindow;
// Change this depending on the name of your PHP file
downloadUrl("form_action.php", 
function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {if (passtypevalue==markers[i].getAttribute("TypeOfPass") || 
    freevalue==markers[i].getAttribute("Free") || metersvalue==true || garagevalue==true || campuspassvalue==true || residentpassvalue==true){
      var spot = markers[i].getAttribute("SpotID");
      var type = markers[i].getAttribute("TypeOfPass");
      var free = markers[i].getAttribute("Free");
      var meter = markers[i].getAttribute("Meter");
      var garage = markers[i].getAttribute("Garage");
      var resident = markers[i].getAttribute("ResidentPass");
      var point = new google.maps.LatLng(
          parseFloat(markers[i].getAttribute("Latitude")),
          parseFloat(markers[i].getAttribute("Longitude")));
      var html = "<b>" + spot + "</b> <br/>" + type;
      var icon = customIcons[type] || {};
      var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: icon.icon
      });
bindInfoWindow(marker, map, infoWindow, html);
      }}
    });
}

}))

})); }

google.maps.event.addDomListener(窗口“加载”,初始化);

我觉得我不够清楚,但我只想能够将地图的位置固定在自定义搜索位置,而不改变地图视图。当有人选择参数(如仪表、车库等)时,我真的需要一些帮助。我想知道的是,如果有可能将搜索栏的位置与我地图上的jquery生成标记结合起来,请查看,您可以在
javascript
中了解
googlemaps搜索栏的自动完成功能。
function bindInfoWindow(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'click', 
function() {
    infoWindow.setContent(html);
    infoWindow.open(map, marker);
  });
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
    new ActiveXObject('Microsoft.XMLHTTP') :
    new XMLHttpRequest;

request.onreadystatechange = function() {
    if (request.readyState == 4) {
        request.onreadystatechange = doNothing;
        callback(request, request.status);
    }
};

request.open('GET', url, true);
request.send(null);
}
 up206b.initialize = function()
    {
        var latlng = new google.maps.LatLng(34.070264, -118.4440562);
        var myOptions = {
            zoom: 13,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);
    }
google.maps.event.addDomListener(window, 'load', initialize);
google.maps.event.addDomListener(window, "resize", function() {
    var center = map.getCenter();
google.maps.event.trigger(map, "resize");
map.setCenter(center); 
function doNothing() {}

<script>
// This example adds a search box to a map, using the Google Place Autocomplete
// feature. People can enter geographical searches. The search box will return a
// pick list containing a mix of places and predicted search terms.

function initialize() {

  var markers = [];
  var map = new google.maps.Map(document.getElementById('map-canvas'), {
mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  var defaultBounds = new google.maps.LatLngBounds(
  new google.maps.LatLng(-33.8902, 151.1759),
  new google.maps.LatLng(-33.8474, 151.2631));
  map.fitBounds(defaultBounds);

  // Create the search box and link it to the UI element.
  var input = /** @type {HTMLInputElement} */(
  document.getElementById('pac-input'));
  map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);

  var searchBox = new google.maps.places.SearchBox(
    /** @type {HTMLInputElement} */(input));

  // [START region_getplaces]
  // Listen for the event fired when the user selects an item from the
  // pick list. Retrieve the matching places for that item.
  google.maps.event.addListener(searchBox, 'places_changed', function() {
    var places = searchBox.getPlaces();

if (places.length == 0) {
  return;
}
for (var i = 0, marker; marker = markers[i]; i++) {
  marker.setMap(null);
}

// For each place, get the icon, place name, and location.
markers = [];
var bounds = new google.maps.LatLngBounds();
for (var i = 0, place; place = places[i]; i++) {
  var image = {
    url: place.icon,
    size: new google.maps.Size(71, 71),
    origin: new google.maps.Point(0, 0),
    anchor: new google.maps.Point(17, 34),
    scaledSize: new google.maps.Size(25, 25)
  };

  // Create a marker for each place.
  var marker = new google.maps.Marker({
    map: map,
    icon: image,
    title: place.name,
    position: place.geometry.location
  });

  markers.push(marker);

  bounds.extend(place.geometry.location);
}

map.fitBounds(bounds);
  // [END region_getplaces]
  // Bias the SearchBox results towards places that are within the bounds of the
  // current map's viewport.
  google.maps.event.addListener(map, 'bounds_changed', function() {
    var bounds = map.getBounds();
    searchBox.setBounds(bounds);
google.maps.event.addDomListener(window, 'load', initialize);

    </script>