2012-08-31 89 views
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!" 
}); 
} 

這需要緯度和經度,並繪製地圖就好了,但是當新的緯度& LNG變量被推入到該功能通過WebSocket的頁面不重裝,但地圖被重新用在新的緯度& LNG位置標記繪製。

我想更新地圖上的標記沒有重繪版圖。

+1

你不應該問一個 – apneadiving

+1

提示兩個問題你的第二個問題:https://developers.google.com/maps/documentation/javascript/reference#LatLngBounds – apneadiving

+0

如果使用導軌,可以考慮使用gmaps4rails – apneadiving

回答

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

我還是不能完全弄清楚,但它更我如何獲取數據到JS的問題,但是,是的,我想你回答了這個問題。感謝 – dylanjha

+0

這只是增加了一個標記。你怎麼知道地圖重繪文更新現有的標記? – Nick