Различают маркеры карт api v3 - PullRequest
0 голосов
/ 02 апреля 2012

я создаю маршрутный поток с геокодированием и обратным геокодированием.Работает довольно хорошо, но когда я хочу перетащить маркеры, я бы хотел обновить правильный ввод с обновленным адресом.Проблема в том, что я не могу определить начало и конец.При использовании следующего кода, если у меня есть только 1 точка, он корректно обновляет начальный адрес, но после добавления другой точки они оба начинают обновлять один и тот же вход.(Не знаю, если у меня была хорошая идея, чтобы отличить их по свойству - я добавляю эти точки в массив, и в зависимости от его длины следует добавить свойство назначения с помощью «start» или «stop».обновляет значение пункта назначения предыдущего).

function placeMarker(location) {
if(list.length < 2) {
    marker = new google.maps.Marker({
        position: location,
        map: map,
        draggable:true,
        animation: google.maps.Animation.DROP,
        destination: 'start'
    });
    map.setCenter(location);
    list.push(marker);
    if (list.length == 2) {
        list[1].destination = 'stop';
    };
    geocoder.geocode({'latLng': location}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            if (results[0]) {
                if(list.length == 1) {
                    $('#start').val(results[0].formatted_address);
                } else {
                    $('#end').val(results[0].formatted_address);
                }
            }
        }
    });
}
if (list.length == 2) {
    drawRoute(list[0].getPosition(), list[1].getPosition());
};
google.maps.event.addListener(marker, 'drag', function(event) {
    console.log(marker.destination);
    geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            if (marker.destination == 'start') {
                $("#start").val(results[0].formatted_address);
            } else {
                $("#end").val(results[0].formatted_address);
            }
        }
    });
});
};

Спасибо за помощь!

1 Ответ

0 голосов
/ 07 апреля 2012

Вы присоединяете eventListener только к одному маркеру, вместо

google.maps.event.addListener(marker, 'drag', function(event){...})

вы должны сделать что-то вроде

google.maps.event.addListener(list[0], 'drag', function(event){...})
google.maps.event.addListener(list[1], 'drag', function(event){...})

, и эти слушатели должны быть присоединены каждый раз, когда создается маркер.

...