GeoJson层中的标记

Marker in the GeoJson Layer

本文关键字:GeoJson      更新时间:2023-09-26

使用Data API导入GeoJson数据时,gmaps将自动为每个特征生成点,并将它们放置在地图上的适当位置。

不幸的是,当收听数据事件(如点击)时,似乎没有方法访问功能对应的标记,或者这个功能不是标记?

这将有助于在标记位置上轻松显示信息窗口。我可以用JS获取geojson,并在循环中添加每个点作为标记。但我认为这是一个肮脏的解决方案。

有办法做到这一点吗?

已创建的形状(例如标记)不可访问,但可以通过特征的几何图形访问特征的属性(例如点的位置)。

样品:

  var infoWindow=new google.maps.InfoWindow();
  //add lick-listener
  map.data.addListener('click', function(event) {
    //geometry of the feature
    var geo=event.feature.getGeometry();
    //when it's a point
    if(geo.getType()==='Point'){
      //create the anchor where the infoWindow will be opened
      var anchor=new google.maps.MVCObject();
      anchor.setValues({//position of the point
                        position:geo.get(),
                        //offset  (0,-height of the marker)
                        anchorPoint:new google.maps.Point(0,-40)});
      //some content
      infoWindow.setContent('marker@'+geo.get().toUrlValue());
      //open the infowindow
      infoWindow.open(this.getMap(),anchor)
    }
  });