2012-06-01 3 views
0

Вот ссылка на мой тестовый пример и код, который я пытаюсь выяснить. http://www.gaiser-vfx.com/media/maptest.htmlСлушатель событий маркера Google Maps не работает

<div id="googleMap"> 
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> 
    <script type="text/javascript" src="http://code.google.com/apis/gears/gears_init.js"></script> 
    <div id="map_canvas" style="width:100%; height:300px"></div> 
<script> 
    var noLocation = new google.maps.LatLng(52.1307, -3.78371); 
    var initialLocation; 
    var browserSupportFlag = new Boolean(); 
    var map; 
    var myOptions = { 
     zoom: 6, 
     draggable: true, 
     minZoom: 0, 
     maxZoom: 20, 
     disableDefaultUI: true, 
     zoomControl: true, 
     scrollwheel: true, 
     disableDoubleClickZoom: true, 
     mapTypeId: google.maps.MapTypeId.false 
    }; 

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    google.maps.event.addListener(map, 'bounds_changed', function() { 
    var center = map.getCenter(); 
    var zoomLevel = map.getZoom(); 
    $('#LocationLatitude').val(center.lat().toFixed(5));$('#LocationLongitude').val(center.lng().toFixed(5));$('#LocationZoom').val(zoomLevel);}); 


    var poly 
    var path = new google.maps.MVCArray; 
    poly = new google.maps.Polygon({ 
     strokeWeight: 3, 
     fillColor: '#5555FF' 
    }); 

    poly.setMap(map); 
    poly.setPaths(new google.maps.MVCArray([path])); 
    google.maps.event.addListener(map, 'click', addPoint); 

    function addPoint(event) { 
     path.insertAt(path.length, event.latLng); 
     var marker = new google.maps.Marker({ 
     position: event.latLng, 
     map: map, 
     draggable: true 
    }); 

    markers.push(marker); 
    marker.setTitle("#" + path.length); 
    google.maps.event.addListener(marker, 'click', function() { 
     marker.setMap(null); 
     for (var i = 0, I = markers.length; i < I && markers[i] != marker; ++i); 
      markers.splice(i, 1); 
      path.removeAt(i); 
     }); 

     google.maps.event.addListener(marker, 'dragend', function() { 
      for (var i = 0, I = markers.length; i < I && markers[i] != marker; ++i); 
       path.setAt(i, marker.getPosition()); 
      } 
     ); 
    } 
</script> 

`

Это пример, который я пытаюсь следовать.

http://gmaps-samples-v3.googlecode.com/svn/trunk/poly/poly_edit.html

Одним из основных отличий между моим кодом и примером является использование вызова в функции инициализации в примере, когда я просто пытаюсь загрузить мину при загрузке страницы. На мой тест карты я могу размещать маркеры на карте, забирать их и перемещать, но функция на каждом маркере, которая обновляет поли до новой точки маркера и возможность удаления каждого маркера, похоже, не работает.

+0

См: http://stackoverflow.com/questions/10854431/how-to-when-marker -is щелкнул-тусклый-The-карта-и-шоу-а-биг-ДИВ-вместо-оф-ан-в/10854743 # 10854743 –

ответ

0

Похоже, все, что вам нужно сделать, это объявляют markers переменных видимые для слушателей событий:

... 
var markers = []; 
var poly; 
var path = new google.maps.MVCArray; 
... 
Смежные вопросы