2013-04-17 2 views
0

Я пытаюсь найти lat и long, которые я добавил на карты. Я уже много раз пробовал, но не мог понять.Получение long long от добавления нескольких маркеров на Google Maps

here is my full code

function initialize() { 
    var mapOptions = { 
    zoom: 4, 
    center: new google.maps.LatLng(41,29), 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById('map-canvas'), 
     mapOptions); 

    google.maps.event.addListener(map, 'click', function(e) { 
    placeMarker(e.latLng, map); 
    }); 
} 

function placeMarker(position, map) { 
    var marker = new google.maps.Marker({ 
    position: position, 
    map: map, 
draggable: true 
    }); 
    map.panTo(position); 
} 

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

просто нажмите em на массив, как только вы их добавите? AFAIK google maps api не поддерживает получение ссылки на маркер, который был добавлен до – supernova

ответ

2

сверхновой прав - Google Maps API не предоставляет способ для ссылки на маркеры, когда они были добавлены к карте любым другим способом, чем сохраняя оригинальный google.maps.Marker. Простое решение состоит в том, чтобы определить массив вне вашей функции и нажимать на него все свои маркеры один за другим по мере их создания. Функция для этого может быть похож на это:

(function() { 
    var markers = []; 
    window.addMarkerToMap(parameters, map) { 
    var params = parameters || {}; 
    params.map = map; 
    var marker = new google.maps.Marker(params); 
    markers.push({ "object": marker, "lat": params.position.lat(), "long": params.position.long() }); 
    return marker; 
    }; 
    window.getMarkers() { 
    return markers; 
    }; 
})(); 

Это дает глобальную функцию addMarkerToMap() с подписью: parameters: Object, map: google.map. Каждый раз, когда вы добавляете маркер, используя его, он будет доступен в массиве, возвращаемом window.getMarkers(). Оттуда маркер удобно находится в object, в то время как координаты lat/long находятся в lat и long соответственно.