маркер google api + клик - PullRequest
       11

маркер google api + клик

0 голосов
/ 29 декабря 2011

Я пытаюсь добавить пользовательский маркер в 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 Ответ

1 голос
/ 29 декабря 2011

Я бы сказал, вместо этого используйте 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
});
...