2011-12-29 3 views
0

Я пытаюсь добавить пользовательский маркер на мой Google API: работает отлично, за исключением, когда я нажимаю на этот маркер, я не имею ни одно событие больше:Google API маркер + щелчок

var map = new GMap2(document.getElementById("map_canvas")); 
map.setCenter(new GLatLng(0, 0), 5); 
map.addControl(new GLargeMapControl3D()); 
map.addControl(new GMenuMapTypeControl()); 

var myIcon = new GIcon(G_DEFAULT_ICON); 
myIcon.image = "http://farm3.staticflickr.com/2140/1911601567_49d97f3318.jpg"; 
myIcon.iconSize = new GSize(80, 60); 
markerOptions={}; 
//markerOptions = { icon:myIcon }; // if I uncomment this : no click anymore 

var bounds = map.getBounds(); 
var southWest = bounds.getSouthWest(); 
var northEast = bounds.getNorthEast(); 
var lngSpan = northEast.lng() - southWest.lng(); 
var latSpan = northEast.lat() - southWest.lat(); 

var point = new GLatLng(southWest.lat() + latSpan * Math.random(), southWest.lng() + lngSpan * Math.random()); 
var marker = new GMarker(point, markerOptions); 
    marker.html = 'hello world'; 
    map.addOverlay(marker); 
    GEvent.addListener(marker, "click", function() { 
     marker.openInfoWindowHtml(marker.html); 
    }) 

Если я раскомментировать //markerOptions = { icon:myIcon };

У меня есть моя фотография, но я больше не могу нажимать на маркер.

Кто-нибудь может мне помочь? Вы можете видеть, как он работает на http://www.roulette-chat.fr/google.php.

С уважением

+1

почему вы используете v2 устаревший API. вы можете использовать v3 – defau1t

ответ

1

Я бы сказал, вместо этого используйте api v3. Тот, который вы используете, устарел. Вы можете использовать что-то вроде ниже, чтобы иметь собственное изображение в качестве маркера. Для того, чтобы установить маркер, как интерактивные вам нужно использовать свойство clickable:true

<script type="text/javascript"> 
     (function() { 
     window.onload = function(){ 
      // Creating a LatLng object containing the coordinate for the center of the map 
      var latlng = new google.maps.LatLng(56.83, 15.16); 
      // Creating an object literal containing the properties we want to pass to the map 
      var options = { 
      zoom: 7, 
      center: latlng, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 
      // Calling the constructor, thereby initializing the map 
      var map = new google.maps.Map(document.getElementById('map'), options); 

      var marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(56.8848, 14.7730), 
      map: map, 
      title: 'My workplace', 
      clickable: true, 
      icon: 'url of your image' //this is a custom marker Image 
      }); 
     } 
     })(); 
     </script> 

Чтобы добавить действие, которое вы должны добавить eventListener так:

google.maps.event.addListener(marker, 'click', function() { 
    //do some action 
}); 
Смежные вопросы