【问题标题】:Google maps get position of an marker谷歌地图获取标记的位置
【发布时间】:2017-12-03 07:14:35
【问题描述】:

我正在添加多个标记,我想要做的是点击,获取特定的标记位置。

但目前它确实有效,但它显示最后创建的标记的 lat 和 lng。如何解决这个问题,以便当我点击标记时,它会给我该标记的特定位置。

function algolia_search(position) {
  clearOverlays();
var APPLICATION_ID = '75RQSC1OHE';
var SEARCH_ONLY_API_KEY = 'f2f1e9bba4d7390fc61523a04685cf12';
var INDEX_NAME = 'businesses';
var PARAMS = { hitsPerPage: 20 };
// Client + Helper initialization
var algolia = algoliasearch(APPLICATION_ID, SEARCH_ONLY_API_KEY);
var algoliaHelper = algoliasearchHelper(algolia, INDEX_NAME, PARAMS);
// Map initialization
algoliaHelper.on('result', function(content) {
    renderHits(content);
  var i;
  // Add the markers to the map
  for (i = 0; i < content.hits.length; ++i) {
    var hit = content.hits[i];
    var marker = new google.maps.Marker({
      position: {lat: hit._geoloc.lat, lng: hit._geoloc.lng},
      map: map,
      label: hit._geoloc.slug,
      animation: google.maps.Animation.DROP
    });
    markers.push(marker);
     marker.addListener('click', function() {
      var destinationLat = marker.getPosition().lat();
      var destinationLng = marker.getPosition().lng();
      console.log(lat);
      console.log(lng);
      console.log(destinationLat);
      console.log(destinationLng);

【问题讨论】:

    标签: google-maps google-maps-api-3 google-maps-markers algolia


    【解决方案1】:

    您需要地图上的侦听器才能点击 event.latLng 您有坐标

    google.maps.event.addListener(map, 'click', function(event) {
        alert ( 'Lat : '  + event.latLng.lat() + ' Lng : ' + event.latLng.lng())
    });
    

    事实上你已经在地图上放置了标记,你可以使用闭包

      var addListenerOnPoint = function(actMark){
    
        actMark.addListener('click', function() {
             alert ( 'Lat : '  + actMark.position.lat() + ' Lng : ' +actMark.position.lng());
        });
    
    
      for (i = 0; i < content.hits.length; ++i) {
          var hit = content.hits[i];
          var marker = new google.maps.Marker({
          position: {lat: hit._geoloc.lat, lng: hit._geoloc.lng},
          map: map,
          label: hit._geoloc.slug,
          animation: google.maps.Animation.DROP
        });
        addListenerOnPoint(marker, 
                      );
        markers.push(marker);
    
      }
    

    【讨论】:

    • 不,不工作仍然给我带来相同的纬度和经度
    • .. 不可能... 这个监听器返回您在地图上单击的点的坐标.. 可能是,您将代码放置在错误的位置..
    • 当我点击地图时它可以工作,但当我点击标记时却不行
    • 回答更新,建议为每个标记添加监听器
    • 效果很棒,请不要在 Lng 后错过 + 的警报中:和用于警报的右括号;)谢谢
    猜你喜欢
    • 2019-09-23
    • 2012-11-26
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 2011-01-30
    相关资源
    最近更新 更多