2016-03-03 2 views
-1

Я ударился головой о стол в последний день или около того и не могу понять это. Когда маркеры добавляются на мою карту, они произвольно генерируют свои метки. Это было бы хорошо, но на странице отображается код PHP, в котором указаны местоположения в указанном порядке. Этот список должен соответствовать маркерам. Я хотел бы использовать число в массиве местоположений как мой ярлык, но независимо от того, что я пытаюсь, я не могу получить метку: местоположения [i] [2] (или любые варианты) для работы.Геокодирование адресов Google Maps с пользовательскими ярлыками?

Я попытался добавить переменную, равную местоположениям [i] [2] в цикле for, но она просто хранит и отображает последнее число при вызове переменной в функции маркера.

Надеюсь, что это имеет смысл.

var locations = [ 
    ['text','address1','1'], 
    ['text','address2','2'], 
    ]; 

var labels = '123456789'; 
var labelIndex = 0; 

var map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 10, 
    center: new google.maps.LatLng(38.3509665,-81.6881185), 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
    disableDefaultUI: true 
}); 

var trafficLayer = new google.maps.TrafficLayer(); 
trafficLayer.setMap(map); 

var infowindow = new google.maps.InfoWindow(); 
var geocoder = new google.maps.Geocoder(); 

var marker, i; 

for (i = 0; i < locations.length; i++) { 
    geocodeAddress(locations[i]); 
} 

function geocodeAddress(location) { 
geocoder.geocode({ 'address': location[1]}, function(results, status) { 
//alert(status); 
if (status == google.maps.GeocoderStatus.OK) { 

    //alert(results[0].geometry.location); 
    map.setCenter(results[0].geometry.location); 
    createMarker(results[0].geometry.location,location[0]+"<br>"+location[1]); 
} 
else 
{ 
    alert("some problem in geocode" + status); 
} 
}); 
} 

function createMarker(latlng,html){ 
var marker = new google.maps.Marker({ 
position: latlng, 
map: map, 
label: labels[labelIndex++ % labels.length], 
}); 

google.maps.event.addListener(marker, 'mouseover', function() { 
infowindow.setContent(html); 
infowindow.open(map, marker); 
}); 

google.maps.event.addListener(marker, 'mouseout', function() { 
infowindow.close(); 
}); 

} 

google.maps.event.addDomListener(window, 'load', initialize); 

Заранее спасибо.

ответ

0

Вот обновленные функции, я добавил 3-я переменная для createMarker под названием label, где я передаю location[2] этой переменной.

function geocodeAddress(location) { 
geocoder.geocode({ 'address': location[1]}, function(results, status) { 
//alert(status); 
if (status == google.maps.GeocoderStatus.OK) { 

    //alert(results[0].geometry.location); 
    map.setCenter(results[0].geometry.location); 
    createMarker(results[0].geometry.location,location[0]+"<br>"+location[1],location[2]); 
} 
else 
{ 
    alert("some problem in geocode" + status); 
} 
}); 
} 

function createMarker(latlng,html,label){ 
var marker = new google.maps.Marker({ 
position: latlng, 
map: map, 
label: label 
}); 
+0

Святое дерьмо. Я не могу поверить, что это было бы так просто. Теперь я чувствую себя немой. СПАСИБО !!! – gr8whtd0pe

Смежные вопросы