选择一个位置时,Google地图会在地图中心显示标记

时间:2013-09-21 07:52:45

标签: xml google-maps google-maps-api-3

我正在将Google地图添加到我的某个网站。 我的下拉列表中有很多州名称。当我点击它时,它会将地图平移到正确的位置。但是标记图标不在地图的中心。我希望当我选择一个位置时,所选位置应该位于地图的中心。 我选择位置的标记就像这样

<div class="state">
    <label>Please Select State</label> <br />
    <select id="selectState" class="statelist" onchange="changeZoomCenter(this.value,'12');">
    </select>
  </div>

谷歌地图的代码就像这样

function changeicons(z){   }
  var customIcons = {
    restaurant: {
      icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|FE7569',
      shadow: 'marker/mm_20_shadow.png'
    },
  };
  var map;
  var directionsDisplay;
  var directionsService = new google.maps.DirectionsService();
  var bounds = new google.maps.LatLngBounds();
  var markerArray = [];
  function loadMap() {
    map = new google.maps.Map(document.getElementById("map-canvas"), {
    center: new google.maps.LatLng(20.0000, 78.0000),
    zoom: 5,
    mapTypeId: 'roadmap'
  });
    google.maps.event.addListener(map, 'zoom_changed', function() {
      var zoomLevel = map.getZoom();
      changeicons(zoomLevel);
    }); 
    var infoWindow = new google.maps.InfoWindow;
      // Change this depending on the name of your PHP file
      downloadUrl("googlemap/xml.php", function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
         // var name = markers[i].getAttribute("name");
          var address = markers[i].getAttribute("address");
          var storeid = markers[i].getAttribute("store_id");
          //var type = markers[i].getAttribute("type");
          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("lat")),
              parseFloat(markers[i].getAttribute("lng")));
          var html = "<b>" + name + "</b> <br/>" + address;
          var icon = customIcons['restaurant'] || {};
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon,
            //shadow: icon.shadow,
      animation: google.maps.Animation.DROP
          });
      markerArray.push(marker);
      bounds.extend(marker.position);
          bindInfoWindow(marker, map, infoWindow, html, storeid);
        }
    map.fitBounds(bounds);

      });

    }



    function bindInfoWindow(marker, map, infoWindow, html, storeid) {
      google.maps.event.addListener(marker, 'click', function() {
        var request = window.ActiveXObject ?
        new ActiveXObject('Microsoft.XMLHTTP') :
        new XMLHttpRequest;
        request.onreadystatechange = function() {
        if (request.readyState == 4) {
           infoWindow.setContent(request.responseText+html);
               infoWindow.open(map, marker);
        }
        };

        request.open('GET', 'php/infobox.php?id='+storeid, true);
        request.send(null);

      });
    }

    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);
    }





  function changeZoomCenter(ll,z){
        var geo = new google.maps.Geocoder;
        geo.geocode({'address':ll},function(results, status){
          if (status == google.maps.GeocoderStatus.OK) {              
            var myLatLng = results[0].geometry.location;
             map.panTo(myLatLng);

             z=parseInt(z);
             map.setZoom(z);
          } else {
            alert("Geocode was not successful for the following reason: " + status);
          }
        });

  }


    function road(s,e) {
  var start = s;
  var end = e;
  directionsDisplay = new google.maps.DirectionsRenderer();
  directionsDisplay.setMap(map);
  var request = {
      origin:start,
      destination:end,
      travelMode: google.maps.DirectionsTravelMode.DRIVING
  };
  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      directionsDisplay.setDirections(response);
    }
  });

}

所以有人可以告诉我如何在页面中心制作标记(图标)

0 个答案:

没有答案