javascript - insertXY() 到新草图 - Openlayers

标签 javascript android openlayers

我在 Android 手机上运行 OpenLayers.js?mobile。

我希望能够从 GPS 绘制线条和多边形,以及点击屏幕添加要素。如果我在屏幕上单击以开始使用新顶点绘制草图,那么我可以调用 insertXY(lat,lon) 或单击以添加顶点,它会按预期工作。

但是,在尝试通过在激活的 OpenLayers.Control.DrawFeature 上调用 insertXY(lat,lon) 开始新草图时,在我调用 finishSketch() 之前没有任何反应,这会引发此错误 - “TypeError: Cannot read property 'geometry ' 为空”。

如何使用 insertXY() 开始绘制草图?

这应该像在这个示例中一样工作:http://openlayers.org/dev/examples/editing-methods.html#

这是相关的javascript:

var map;
var draw;


map = new OpenLayers.Map({
    div: "map",
    layers: [
        var roads = new OpenLayers.Layer.Vector()
    ],
    center: new OpenLayers.LonLat(0, 0),
    zoom: 1
});



draw = new OpenLayers.Control.DrawFeature(roads, OpenLayers.Handler.Path);
map.addControl(draw);

draw.activate()


function add_GPS_Line_vertex(lon,lat) {
    /* this function only works if sketch has been manually started */
    var lat = parseFloat(lat);
    var lon = parseFloat(lon);
    var point = new OpenLayers.Geometry.Point(lon, lat);
    lon = point.x;
    lat = point.y;
    draw.insertXY(lon,lat);
}

最佳答案

如果鼠标永远不会悬停在 map 上,我也在链接示例 (http://openlayers.org/dev/examples/editing-methods.html#) 中重现了这个错误,并且您只通过坐标添加点,然后调用 draw.finishSkech()方法。

我通过仅在鼠标位于 map 上时才开始绘图来解决此问题:

map.events.register('mousemove', map, function (e) {

   //make sure it only runs once (with a flag or something)
   if (mouseFlag == true) {
     mouseFlag = false;

     // do your drawing
     draw.insertXY(lon,lat);

     draw.finishSketch();
  }
});

或者,如果您只需要绘制一个形状,您可以随时使用:

draw.drawFeature(geometry);

关于javascript - insertXY() 到新草图 - Openlayers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16049286/

相关文章:

Javascript/OpenLayers 匹配

javascript - 在单个 gulp 链中组合多个源

javascript - 像 Accordion 一样滑下高度

javascript - Passport JS "Can' t 在发送后设置标题"

Android:自定义照片尺寸

类似于 Facebook 的 Android 搜索

javascript - VueJS 数组索引返回错误结果

android - 如何知道重复的库是模块还是组?

javascript - 静态图像层性能问题 - Open Layers 3

openlayers - 如何在 OpenLayers.Layer.Markers 层中移动标记?