2016-11-19 24 views
2

谷歌地图API文件中的字段我使用的是最新的谷歌地图API v3和努力实现以下目标:与地方-ID

  1. 地图中心用户在移动设备上加载页面。我在下面的代码中工作。

  2. 用户从地图上点击/触摸POI并查看信息窗口的功能。这也是因为它的谷歌地图的基本功能。

  3. 这是我被难倒了。我需要能够从信息窗口的第一个字段和第二个字段的Place-ID填充两个字段的POI名称。

这是我到目前为止已经发现: https://developers.google.com/maps/documentation/javascript/examples/places-placeid-finder

此链接允许的地方搜索和填充,标记产生信息窗口与搜索到的位置的地方-ID。但是,如果您单击标记外的任何POI,则不会有Place_ID。

其他密切的解决方案: Get placeId on google maps when POI is clicked

该解决方案可以让你点击看到的地方-ID,但有2个主要问题。首先,与上述第一个链接相同的POI为完全相同的位置生成与此解决方案不同的Place-ID。此外,无论POI是否靠近,它都会为地图上的任意点生成Place-ID。

这里是我的代码迄今:

function initMap() { 
    var map = new google.maps.Map(document.getElementById('map'), { 
     center: {lat: -34.397, lng: 150.644}, 
     zoom: 17, 
     streetViewControl: false, 
     mapTypeControl: false 
    }); 
    var infoWindow = new google.maps.InfoWindow({map: map}); 

    // Try HTML5 geolocation. 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function(position) { 
     var pos = { 
      lat: position.coords.latitude, 
      lng: position.coords.longitude 
     }; 

     infoWindow.setPosition(pos); 
     infoWindow.setContent('Location found.'); 
     map.setCenter(pos); 
     }, function() { 
     handleLocationError(true, infoWindow, map.getCenter()); 
     }); 
    } else { 
     // Browser doesn't support Geolocation 
     handleLocationError(false, infoWindow, map.getCenter()); 
    } 
    } 

    function handleLocationError(browserHasGeolocation, infoWindow, pos) { 
    infoWindow.setPosition(pos); 
    infoWindow.setContent(browserHasGeolocation ? 
          'Error: The Geolocation service failed.' : 
          'Error: Your browser doesn\'t support geolocation.'); 
    } 

我将不胜感激,可能的原因的地方,ID是这些方法和可能的解决方案,从得到真正地-ID之间总是不同被有何启示点击事件。谢谢!

回答

1

您可以在地图上聆听点击事件。如果您点击POI图标,IconMouseEvent将被抬起。

根据文档:

google.maps.IconMouseEvent对象规范

当用户点击地图上的图标这个目的是在一个事件发送。该地点的地点ID存储在placeId成员中。为防止显示默认信息窗口,请在此事件上调用stop()方法以防止它传播。在Places API开发人员指南中了解更多有关地点ID的信息。

此对象扩展MouseEvent。

请看看这个示例代码,找出如何使用事件与地点ID:

http://jsbin.com/parapex/10/edit?html,output

希望它能帮助!

+0

这正是我所需要的!谢谢。我添加了我需要填充的4个字段,它可以工作。 https://jsbin.com/nuxadi/edit?html,output我现在要做的就是取消2 POI功能之间的方向。 –