Как показать 2 маркера на карте Google? - PullRequest
0 голосов
/ 10 мая 2011

Как получить несколько маркеров на карте Google, используя Javascript API v3? Ниже, когда мой код добавляет второй маркер, он удаляет первый.

var locations = {
    "1" : {
        "name": "location1",
        "address": "10000 N Scottsdale Rd",
        "city": "Scottsdale",
        "state": "AZ",
        "zipcode": "85253"                                              
    },
    "2" : {
        "name": "location2",
        "address": "15440 N 71st Street",
        "city": "Scottsdale",
        "state": "AZ",
        "zipcode": "85254"
    }
}               
var geocoder = new google.maps.Geocoder();
for (item in locations) {
    var loc = locations[item].address + ", " + locations[item].city + " " +
        locations[item].state + " " + locations[item].zipcode;
    geocoder.geocode( { 'address': loc}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var options = {
                zoom: 10,
                center: results[0].geometry.location,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                disableDefaultUI: true,
                zoomControl: true
            }
            if (map) {
                new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location,
                    title: locations[item].name
                });                                                                     
            } else {
                var map = new google.maps.Map(document.getElementById("map"), options);
                new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location,
                    title: locations[item].name
                });                                 
            }
            var infowindow = new google.maps.InfoWindow({ content: "test"});
        } else {  // if map lookup fails, display a map of phoenix
            var phoenix = new google.maps.LatLng(33.4483771,-112.07403729999999);
            var options = {
                zoom: 11,
                center: phoenix,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                disableDefaultUI: true,
                zoomControl: true
            }
            map = new google.maps.Map(document.getElementById("map"), options);
        }
    });
}

Ответы [ 2 ]

1 голос
/ 10 мая 2011

цикл по вашей конструкции маркера из вашего набора данных.Каждый элемент в вашем наборе создайте маркер, как обычно.Создайте свою карту только один раз и используйте переменную, назначенную этому при создании вашего маркера.

1 голос
/ 10 мая 2011

Переменная map определяется только в функции обратного вызова (например, function(results, status) {...}), поэтому, когда возвращается вторая геокодированная точка, вы по-прежнему создаете новую карту (во второй раз), так как map не инициализирован.

Вы должны объявить и инициализировать карту отдельно от кода добавления маркера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...