javascript - 诺基亚 HERE map : Letting user draw polygon on map

标签 javascript here-api

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

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

我如何实现这一点?

最佳答案

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

//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 中查看对象属性和函数开发者页面

关于javascript - 诺基亚 HERE map : Letting user draw polygon on map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255335/

相关文章:

vue.js - HereMaps Vue : trying to add behavior but H. mapevents 未定义

javascript - 提交前确保输入字段有值

javascript - 使用 javascript 自定义光标图像

Javascript Regex 或 Jquery 解析 html 字符串?

here-api - HERE map - 卡车限制

javascript - Here Maps JavaScript API 3.0 Explorer 如何设置标记颜色

javascript - jquery .click 事件不适用于 chrome 扩展中的图像

javascript - 图像中红色像素的平均值?

jquery - 如何在 HERE map 中以相同的缩放比例放大 map 并将其移动到位置

ios - 这里 Maps SDK iOS Swift 3 文档