更新谷歌地图标记而不重建地图

时间:2012-08-31 07:14:26

标签: javascript jquery google-maps-api-3

我正在使用google maps api:

this.init_map = function(lat, lng){
var mapOptions = {
  center: new google.maps.LatLng(lat, lng),
  zoom: 17,
  mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

var marker = new google.maps.Marker({
  position: new google.maps.LatLng(lat, lng),
  map: map,
  title:"I'm Here!"
});
}

这需要lat和lng,并且绘制地图就好了,但是当新的lat& lng变量通过websocket被推入此函数,页面不会重新加载,但是地图会被新的lat&中的标记重新绘制。 lng职位。

我想更新地图上的标记而不重绘地图。

1 个答案:

答案 0 :(得分:5)

var map = null;
var markers = [];

this.init_map = function(){
var mapOptions = {
  center: new google.maps.LatLng(lat, lng),
 zoom: 17,
  mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}

this.addMarker = function(lat, lng, id){
  var marker = new google.maps.Marker({
    position: new google.maps.LatLng(lat, lng),
    map: map,
    title:"I'm Here!"
  });
  markers.push({ id: id, markerObject: marker});
}

this.updateMarkerCoordinates(lat, lng, id){
  //I let you loop the markers array, compare ids and retrieve the marker
    marker.setPosition(new google.maps.LatLng(lat, lng));
}