【问题标题】:Nokia HERE Maps: Letting user draw polygon on map诺基亚 HERE 地图:让用户在地图上绘制多边形
【发布时间】:2014-01-21 10:22:39
【问题描述】:

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

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

我如何做到这一点?

【问题讨论】:

    标签: javascript here-api


    【解决方案1】:

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

    //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 }
            }
       );
    }
    

    希望这可以作为指导对您有所帮助。 您可以在Here maps 开发者页面查看对象属性和功能

    【讨论】:

    • 这很有帮助,谢谢!
    • 有没有办法检查是否已经有一个事件监听器附加到一个函数?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多