Google Maps V3: положение мыши по оси x для настраиваемого всплывающего нажатия на маркер, fromLatLngToContainerPixel - PullRequest
0 голосов
/ 27 марта 2012

Я хотел сделать свое собственное всплывающее окно js, нажимая на маркер.Поскольку я ничего не нашел по этому поводу в API, я просто думал о том, чтобы получить xy pos мыши, а затем «рисовал» мой div.

Нашел этот пример:

Получить положение курсора мыши при наведении курсора на Google Maps V3 API Marker

Но когда я делаю console.log (marker.getPosition ()) всегда 0,0.

Любойсделал это собственное всплывающее окно, и могли бы дать мне совет, как это сделать?Должен ли я работать с "fromLatLngToContainerPixel" или есть другой элегантный способ?

Вот код._spots - это объект json.

  for (var i = 0; i <= _spots.length; i++) {

      var myLatLng = new google.maps.LatLng(_spots[i].lat, _spots[i].long);
      var spotMarker = new google.maps.Marker({
          position: myLatLng,
          map: map, 
          title: _spots[i].name,
          animation: google.maps.Animation.DROP,
          icon: image,
          street: _spots[i].street,
          zipcode: _spots[i].zipcode,
          info: _spots[i].info,
      });

      markersArray.push(spotMarker);

        google.maps.event.addListener(spotMarker, 'click', function() {
            console.log(this);

            alert(spotMarker.getPosition());          // -> at this point I get 0,0
            var projection = overlay.getProjection(); 
            var pixel = projection.fromLatLngToContainerPixel(spotMarker.getPosition());
            console.log(pixel);

        });     
 }

С уважением, sv

1 Ответ

0 голосов
/ 28 марта 2012
for (var i = 0; i <= _spots.length; i++)

Это должно быть:

for (var i = 0; i < _spots.length; i++) 

В противном случае последний цикл будет указывать на недопустимое смещение.

Однако вы должны использовать

alert(this.getPosition()); 

.. для доступа к нажатому маркеру.

spotMarker всегда будет возвращать один и тот же маркер (последний созданный)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...