0

我正在使用这样的谷歌地图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 中的标记重新绘制位置。

我想在不重绘地图的情况下更新地图上的标记。

4

1 回答 1

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));
}
于 2012-08-31T07:43:23.883 回答