Получить широту и долготу маркера (onclick) - PullRequest
14 голосов
/ 16 июня 2011

Как вы можете создать слушателя для маркера и получить его широту и долготу. Когда я создаю слушателя для каждого маркера события щелчка, я могу делать такие вещи, как оповещение о щелчке, но как я могу получить координаты маркера, т.е. click -> this.getLat/getLng и т. Д. При нажатии?

Ответы [ 3 ]

28 голосов
/ 16 июня 2011

Попробуйте это:

marker = new google.maps.Marker({
             position: latlng,
             map: map                    
}); //end marker

//Add listener
google.maps.event.addListener(marker, "click", function (event) {
                    alert(this.position);
}); //end addListener
23 голосов
/ 30 января 2012

В качестве продолжения отличного ответа Брайана Уивера, если вы хотите СОХРАНИТЬ широту и долготу отдельно, вы должны использовать lat () и lng (). свойство position не является обычной строкой.

код Брайана станет:

marker = new google.maps.Marker({
             position: latlng,
             map: map                    
}); //end marker

//Add listener
google.maps.event.addListener(marker, "click", function (event) {
    var latitude = this.position.lat();
    var longitude = this.position.lng();
    alert(this.position);
}); //end addListener

Вы можете применить lat () и lng () непосредственно к переменной (latLng)

    var latitude = latLng.lat();
    var longitude = latLng.lng();
1 голос
/ 25 марта 2018

Все ответы здесь хорошие,

, но я попробовал кое-что, что работает, например, Google Maps.Когда вы щелкаете где-то на карте, появляется маркер, но когда вы щелкаете где-то еще, старый маркер исчезает, а новый маркер появляется с широтой и долготой в текстовом поле.

Вот DEMO

  // In the following example, markers appear when the user clicks on the map.
  // The markers are stored in an array.
  // The user can then click an option to hide, show or delete the markers.
  var map;
  var markers = [];

  function initMap() {
    var haightAshbury = {lat: 23.2748308, lng: 77.4519248};

    map = new google.maps.Map(document.getElementById('map'), {
      zoom: 16.3,                        // Set the zoom level manually
      center: haightAshbury,
      mapTypeId: 'terrain'
    });

    // This event listener will call addMarker() when the map is clicked.
    map.addListener('click', function(event) {
      if (markers.length >= 1) {
          deleteMarkers();
      }

      addMarker(event.latLng);
      document.getElementById('lat').value = event.latLng.lat();
      document.getElementById('long').value =  event.latLng.lng();
    });
  }

  // Adds a marker to the map and push to the array.
  function addMarker(location) {
    var marker = new google.maps.Marker({
      position: location,
      map: map
    });
    markers.push(marker);
  }

  // Sets the map on all markers in the array.
  function setMapOnAll(map) {
    for (var i = 0; i < markers.length; i++) {
      markers[i].setMap(map);
    }
  }

  // Removes the markers from the map, but keeps them in the array.
  function clearMarkers() {
    setMapOnAll(null);
  }

  // Deletes all markers in the array by removing references to them.
  function deleteMarkers() {
    clearMarkers();
    markers = [];
  }
</script>
<script async defer
    src="http://maps.google.com/maps/api/js?sensor=false&callback=initMap">
</script>

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

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