2015-03-29 4 views
-1

Я пытался заставить слушателей работать с GMaps, но у вас были некоторые проблемы. В момент нажатия на маркеры выдает адрес остановки, но не вызывает обработчик. Кроме того, я Определяя маркеры с помощью службы направления в случае, который может по какой-либо причине эффект обработки событийGoogle Maps Marker Listeners

Initializing ...

function initialize() { 

    latlng   = avgLatLng(load) 
    directionsService = new google.maps.DirectionsService(); 
    directionsDisplay = new google.maps.DirectionsRenderer(); 
    mapOptions = { 
    zoom    : 10, 
    center   : {lat : latlng['latitude'], lng : latlng['longitude']}, 
    disableDefaultUI : true, 
    } 
    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 

    setMarkers(load); 
    calcRoute(load.stops) 
} 

Рассчитать маршрут ...

function calcRoute(stops) { 
    var markerLocs = []; 
    var travelMode = google.maps.TravelMode['DRIVING']; 
    for(var i=0; i<stops.length; i++) { 
    markerLocs.push({ 
     location : new google.maps.LatLng(stops[i].latitude, stops[i].longitude), 
     stopover : (i==0 || i==stops.length ? false : true), 
    }); 
    } 
    var request = { 
    origin: markerLocs[0].location, 
    destination: markerLocs[markerLocs.length-1].location, 
    waypoints: markerLocs.slice(1, (markerLocs.length-1)), 
    travelMode: travelMode, 
    }; 
    directionsService.route(request, function(response, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 
     directionsDisplay.setDirections(response); 
    } 
    }); 
    directionsDisplay.setMap(map); 
} 

Set маркеры ...

function setMarkers(load) { 
    for (var i = 0; i < load.stops.length; i++) { 
    var markerOptions = { 
     position: {'lat' : load.stops[i]['latitude'], 'lng' : load.stops[i]['longitude']}, 
     map: map, 
     animation: google.maps.Animation.DROP, 
     title: load.stops[i]['city'], 
     zIndex: i, 
     clickable: false, 
    } 
    var marker = new google.maps.Marker(markerOptions); 
    google.maps.event.addDomListener(marker, 'mouseout', function() { 
     console.log('mouseover'); 
    }); 
    google.maps.event.addDomListener(marker, 'click', function() { 
     console.log('mouseover'); 
    }); 
    } 
} 
+0

Просьба представить [Минимальный, завершенный, проверенный и читаемый пример] (http://stackoverflow.com/help/mcve), который демонстрирует проблему. – geocodezip

ответ

0

У вас есть простая ошибка в коде. В функции функции setMarkers (нагрузки), ваши маркеры настроены не реагировать на события нажатия:

clickable: false, 

должно быть:

clickable: true, 

Вам нужно установить интерактивными даже получить MouseOver и MouseOut события.