2016-06-28 6 views
0

Я пытаюсь разрешить пользователям моего приложения определять «территорию» (как многоугольник). Затем другие могут запросить точку (lat и long), чтобы определить, на какой территории находится эта точка. Я определил из документов для GeoAlchemy2, что это, вероятно, будет хорошим инструментом для работы (мое приложение в настоящее время находится в dev, поэтому Я открыт для других предложений. Я использую флягу, колбу-sqlalchemy и Sqlite в dev ... планирую на Postgres в prod. AngularJS для интерфейса).ng-map Drawing Manager to GeoAlchemy

Мой поиск приводит меня к ng-карте, в частности, директиву менеджера чертежей, представленную здесь. https://ngmap.github.io/#/!drawing-manager.html. При модификации примера я могу попасть в объект google onMapOverlayCompleted. Там я вижу объект latLng, но я не уверен, как его преобразовать во что-то, что я могу сохранить в базе данных. Предполагая, что я делаю это в JS, могу ли я отправить его JSON для отправки в мой API-интерфейс Flask?

Может ли кто-нибудь указать мне в правильном направлении, как это сделать? Я более чем готов выслушать лучшие идеи.

Спасибо.

Вот код из этого примера:

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

Как я могу получить многоугольник «е»?

+0

У вас есть идея об этой ошибке? Uncaught TypeError: Не удается прочитать свойство 'onMapOverlayCompleted' of undefined –

ответ

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()); 
    }); 
} 
+0

У вас есть идея об этой ошибке? Uncaught TypeError: Не удается прочитать свойство «onMapOverlayCompleted» undefined –

+0

@Llg Используете ли вы мою функцию вместе с кодом GMarsh? Вы должны определить переменную 'vm', как он это сделал:' var vm = this; '. –