Google Maps API с помощью плагина jQuery: как получить широту и долготу маркера при клике? - PullRequest
3 голосов
/ 22 декабря 2010

Я использую плагин для Google Maps API V3.Я использую его, чтобы поместить маркер на карту и позволить пользователю перетащить маркер в точку на карте.Я хочу получить широту и длину маркера при клике.

Страница плагина goMap: http://www.pittss.lv/jquery/gomap/index.php

Эта функция устанавливает маркер в первую очередь.

$("#map").goMap({ 
   zoom: 16,
   maptype: 'ROADMAP',
   navigationControl: false, 
   mapTypeControl: false, 
   scrollwheel: true, 
   disableDoubleClickZoom: false,
   markers: [{  
       draggable:true,
       latitude: data.lat, 
       longitude: data.lng, 
       icon:'./images/pink.png'
  }] 
});           

Я пытался вызвать нативный метод getLat () в goMap (), но я не думаю, что делал это правильно.Любая помощь очень ценится.

Ответы [ 2 ]

4 голосов
/ 22 декабря 2010

После небольшого перерыва в работе похоже, что он использует функцию data() jQuery для привязки данных к карте. Получить данные можно через $('#map').data(), в котором есть информация о маркерах.

Каждый маркер имеет идентификатор, и вы можете получить идентификатор маркера через массив $.goMap.markers. Обратите внимание, что $.goMap.markers содержит только строки, которые являются идентификаторами, а не сами маркеры.

Вам нужно будет использовать этот массив, чтобы найти нужный идентификатор (или вы могли бы знать его заранее), а затем вызвать $('#map').data()['MARKER_ID'], чтобы получить маркерный объект. Маркер имеет несколько свойств, включая title, visible, icon, id и position.

Мы заботимся о position, который имеет два свойства, wa и ya. wa кажется широтой, а ya - долготой. Так $('#map').data()['MARKER_ID'].position.wa даст вам широту, например. Кажется, что некоторые маркеры имеют свойство latitude и longitude, не знаю, почему это не всегда так (по крайней мере из моего краткого тестирования), но вместо этого вы можете попробовать $('#map').data()['MARKER_ID'].latitude.

Надеюсь, это поможет.

1 голос
/ 17 апреля 2012

Я не знаю почему, но имена реквизита часто меняются со временем ... Похоже, лучшее решение - получить имена ключей и использовать их, чтобы узнать широту и долготу.

Итак, еслиВы хотите получить координаты после перетаскивания, например, вы будете использовать:

$.goMap.createListener({type:'marker', marker:'MARKER_ID'}, 'dragend', function() {

    var i_prop = 2;
    var map_data_marker = $('#map').data()['MARKER_ID'].position;
    var map_data_marker_keys = [];

    for (var key in map_data_marker)
    {
        if (i_prop--)
        {
            if (map_data_marker.hasOwnProperty(key))
            {
                map_data_marker_keys.push(key);
            }
        }
        else
        {
            break;
        }
    }

    var lat_lng = map_data_marker[map_data_marker_keys[0]] + ', ' + map_data_marker[map_data_marker_keys[1]];

}); 
...