2015-12-11 42 views
0

我已經建立了一個for循環來測試一組位置,當真正發送經/緯度值的函數來創建標記。我的問題是標記移動,但不會產生額外的標記。我不清楚爲什麼發生這種情況,因爲我會認爲,因爲每次調用addMarker函數時都會創建一個新的實例變量,所以我會在地圖上獲得另一個標記。任何幫助表示讚賞。謝謝。谷歌地圖不能設置多個標記

function addMarker(x, y) { 
    var myLatLng = { 
     lat: parseFloat(x), 
     lng: parseFloat(y) 
    }; 
    console.log(myLatLng); 
    var map = new google.maps.Map(document.getElementById("map"), { 
     zoom: 6, 
     center: myLatLng 
    }); 
    var marker = new google.maps.Marker({ 
     position: myLatLng, 
     map: map, 
     title: 'hello world' 
    }); 
    markers.push(marker); 
    marker.setMap(map); 
} 

回答

2

這是因爲每個循環中,您要創建在這條線新的地圖:

var map = new google.maps.Map(document.getElementById("map"),{ 
    zoom: 6, 
    center: myLatLng 
}); 

你需要聲明一次,而不是每個循環:

var neighborhoods = [ 
    {lat: 52.511, lng: 13.447}, 
    {lat: 52.549, lng: 13.422}, 
    {lat: 52.497, lng: 13.396}, 
    {lat: 52.517, lng: 13.394} 
]; 

var markers = []; 
var map; 

function initMap() { 
    map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 12, 
    center: {lat: 52.520, lng: 13.410} 
    }); 
} 

function addMarkers() { 
    for (var i = 0; i < neighborhoods.length; i++) { 
    markers.push(new google.maps.Marker({ 
     position: neighborhoods[i] 
     map: map, 
     animation: google.maps.Animation.DROP 
    })); 
    } 
} 
+0

感謝,任何想法爲什麼我會得到消息:InvalidValueError:setMap:不是Map的一個實例;而不是StreetViewPanorama的一個實例。沒關係,我在init中定義了'map'。非常感謝,答案/解釋真的很有幫助。 – KM617

+0

不客氣! –