将绘图管理器映射到GeoAlchemy

时间:2016-06-28 15:19:38

标签: python angularjs google-maps ng-map geoalchemy2

我正在尝试允许我的应用上的用户定义“区域”(作为多边形)。然后其他人可以查询一个点(纬度和长度),以确定该点落入的区域。我已经从GeoAlchemy2的文档中确定,这可能是一个很好的工具(我的应用程序是开发的,所以我对其他建议持开放态度。我在开发中使用flask,flask-sqlalchemy和Sqlite ...计划生产中的Postgres.GngularJS用于前端)。

我的搜索引导我到ng-map,特别是这里看到的绘图管理器指令。 https://ngmap.github.io/#/!drawing-manager.html。在修改示例时,我可以访问google onMapOverlayCompleted对象。在那里我看到一个latLng对象,但我不确定如何将它转换为我可以在数据库中持久化的东西。假设我在JS中执行此操作,是否可以将其转储到JSON以发送到我的Flask API?

有人能指出我正确的方向如何做到这一点?我更愿意倾听更好的想法。

感谢。

以下是该示例中的一些代码:

var app = angular.module('myapp', ['ngMap']);
app.controller('DrawingManagerCtrl', function() {
  var vm = this;
  vm.onMapOverlayCompleted = function(e){
    console.log(e);
  };
});

如何从'e'获取多边形?

1 个答案:

答案 0 :(得分:0)

您可以查看此答案https://stackoverflow.com/a/38827199/785985,了解如何获取点数组。这是代码:

e.overlay.getPath().getArray();

然后你可以迭代数组并获得每个项目的纬度和经度。所以你的代码变成了:

vm.onMapOverlayCompleted = function(e){
  console.log(e);
  e.overlay.getPath().getArray().forEach(function (position) {
    console.log('lat', position.lat());
    console.log('lng', position.lng());
  });
}