複数のマーカーにリンクを張るのに問題がありますが、地図上にマーカーを表示できますが、リンクを張ってみると、すべてのマーカー上の同じリンク、最後のマーカー。ここで私はサンプルコードを提供します:Javascript Google Maps Api、リンク付きの複数のマーカー、ジオシェダーのみ
<div id="map" style="height: 400px; width:100%;"></div>
<script>
var markers = [{"name":"Vasto","url":"http://www.google.com"},{"name":"Chieti","url":"http://www.wikipedia.com"}];
var geocoder;
var map;
var LatLng;
var url;
console.log(markers);
function initMap() {
LatLng = {lat: 42.2872297, lng: 13.3403448};
map = new google.maps.Map(document.getElementById('map'), {zoom: 8, center: LatLng});
geocoder = new google.maps.Geocoder();
setMarkers();
}
function setMarkers() {
var marker, i, url;
for(i = 0; i < markers.length; i++) {
url = markers[i].url;
geocoder.geocode({'address': markers[i].name}, function(results, status) {
if (status === 'OK') {
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: results[0].address_components[0].long_name,
});
google.maps.event.addListener(marker, "click", function() {
window.location.href = url;
});
} else {
/*console.log('Geocode was not successful for the following reason: ' + status);*/
}});
}
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=MYKEY&callback=initMap" async defer></script>
すべての解決策はありますか? により非同期コードへの事前
非同期関数(geocoder.geocode)を変更する必要があるが...ときに我々が今まで学ぶことができます - 私はよ適切な複製を探していますが、私が酔っていたので見つからないようです。 –
はい、私はジオコーダが必要です。なぜなら、latlngデータを保存できないからです。 –
代替手段は必要ありません。問題は非同期コードです... geocoder.geocodeコールバックのコードが呼び出されるまでに、 'url'の値は** marker ** [marker]になります。長さ - 1] .url' –