Javascript 诺基亚地图:让用户在地图上绘制多边形

Javascript 诺基亚地图:让用户在地图上绘制多边形,javascript,here-api,Javascript,Here Api,我想为用户在地图上绘制多边形创建一个选项 点应在单击地图时绘图,当再次单击第一个点时,应绘制半透明多边形 如何实现这一点?您可以向地图添加一个单击侦听器,在地图中创建标记。 您创建的第一个标记应该有一个单击侦听器来结束编辑(删除您第一次添加到地图中的侦听器) 每次在地图中创建新标记时,都可以绘制多边形 //Supposing map is an instance of our map. //Suposing we have a global instance of a container cal

我想为用户在地图上绘制多边形创建一个选项

点应在单击地图时绘图,当再次单击第一个点时,应绘制半透明多边形


如何实现这一点?

您可以向地图添加一个单击侦听器,在地图中创建标记。 您创建的第一个标记应该有一个单击侦听器来结束编辑(删除您第一次添加到地图中的侦听器) 每次在地图中创建新标记时,都可以绘制多边形

//Supposing map is an instance of our map.
//Suposing we have a global instance of a container called myContainer and has been already added to the map
//suposing we have a global variable called polygon and has been already added to the map

map.addListener("click", addMarker);

function addMarker(evt){

  var pixelGeo =  map.pixelToGeo(evt.displayX, evt.displayY);
  var coordinate = new nokia.maps.geo.Coordinate(pixelGeo.latitude, pixelGeo.longitude);
  var marker = new nokia.maps.map.StandardMarker(coordinate);

  //compare if it's the first created marker, so we can add an event listener for ending
  if(myContainer.objects.getLength() > 0){
      //add event listener to marker
      marker.addListener("click",finishPolygon);

  }

  //add marker to container
  myContainer.objects.add(marker);

  //paint polygon acording to markers
  paintPoly();
}

function paintPoly(){

   //grab coordinates from markers and draw polyline
   var aMarkers = myContainer.objects.asArray();
   var aCoords = [];
   for(var marker in aMarkers){
       var marker = aMarkers[marker];
       aCoords.push(marker.coordinate);
   }

   //remove polygon instance from map
   map.objects.remove(polygon);

   //add new polygon
   polygon = new nokia.maps.map.Polygon(
        aCoords,
        {
            pen: { strokeColor: #000, lineWidth: 1 },
            brush: { color: #ababab }
        }
   );
}
希望这对你有所帮助。
您可以在开发者页面查看对象属性和函数

这非常有用,谢谢!有没有办法检查函数是否已经附加了事件侦听器?