1

Отслеживание одного объекта на карте с помощью Wialon Pro SDK

Topic: Отслеживание одного объекта на карте с помощью Wialon Pro SDK

Здравствуйте, можно ли, с помощью Wialon Pro SDK организовать наблюдение за 1 объектом на карте? Т.е. чтобы была только карта и двигающийся на ней объект, без каких либо дополнительных упрвляющих элементов. Я нашел подобную тему, но там речь шла о JS API. В частности советовали использовать какой-то апп и события changePosition. Как я понимаю, в Wialon Pro Remote API упомянеутого аппа нет. Поэтому интересно можно ли вообще сделать подобное. Единственное что мне пока пришло в голову - это периодическое получение тайлов трека и карты. Но мне почему-то кажется, что оверхед будет слишком большой. Есть ли более рациональный способ сделать требуемое?

Попутно хотелось бы уточнить следующий момент: для получения результирующей картинки карты с объектом я должен получить .png изображения карты и объектов с треками, а уже потом наложить их, к примеру, средствами используемого мной java фрэймворка?

2

Отслеживание одного объекта на карте с помощью Wialon Pro SDK

Re: Отслеживание одного объекта на карте с помощью Wialon Pro SDK

Механизма отслеживания собитий на Pro нет, поэтому для решения данной задачи вы можете каждые несколько секунд выполнять запрос core/search_item с флагами местоположения или messages/load_interval. Так вы узнаете новое местоположение объекта.
По поводу трека и карты, если вы имеете в виду "хвост" из последних перемещений объектов, который отображается на карте в Pro, то он рисуется на клиенте, при помощи линий. И если вам нужно именно несколько последних перемещений отрисовать, то проще будет рисовать их самому чем создавать слой трека и запрашивать тайлы. Еще момент, объект в тайле не приходит, у него есть иконка, получив которую вы можете отобразить на карте в том месте где у объекта было последнее сообщение, или там где посчитаете нужным.

Development Department
Gurtam
3

Отслеживание одного объекта на карте с помощью Wialon Pro SDK

(edited by solveMe 12/11/2013 03:45:13)

Re: Отслеживание одного объекта на карте с помощью Wialon Pro SDK

Спасибо. Более менее начинаю вникать. Правда появился еще один вопрос по поводу карт. Есть ли где-нибудь готовые формулы или алгоритмы расчета х и у координат тайла для заданного уровня масштабирования и с центрированием по заданному адресу? И еще интересно узнать по поводу интерфейса карт, как это сделано в виалоне. Я имею ввиду картинку карты с ползунком зуммирования и стрелочками. Если мне эти вещи понадобится добавить в мое приложение мне придется это самому дописывать?

P.S. Попробовал выполнить запрос на получение тайла карты вебгис:

http://myserver.ru/map_gmaps/<2>_<2>_<13>.png

В ответ приходит белый квадрат 256 на 256, другие комбинации уровня зума и координат тайла дают тот же квадрат. Помогите пожалуйста разобраться в чем ошибка.

4

Отслеживание одного объекта на карте с помощью Wialon Pro SDK

(edited by zuve 12/11/2013 11:01:59)

Re: Отслеживание одного объекта на карте с помощью Wialon Pro SDK

solveMe wrote:

Есть ли где-нибудь готовые формулы или алгоритмы расчета х и у координат тайла для заданного уровня масштабирования и с центрированием по заданному адресу?

Принципы расчета координат. Центрирование, зависит от фреймворка который вы используете, у гугла например есть метод setCenter у объекта карты.

solveMe wrote:

И еще интересно узнать по поводу интерфейса карт, как это сделано в виалоне. Я имею ввиду картинку карты с ползунком зуммирования и стрелочками. Если мне эти вещи понадобится добавить в мое приложение мне придется это самому дописывать?

В виалоне используется фреймворк OpenLayers, где можно кастомизировать иконки зума и так далее.

solveMe wrote:

В ответ приходит белый квадрат 256 на 256, другие комбинации уровня зума и координат тайла дают тот же квадрат. Помогите пожалуйста разобраться в чем ошибка.

Возможно у вас есть карты не всех стран. Вот например тайл который отображает кусочек России http://pro.wialon.com/map_gmaps/80_45_10.png

Development Department
Gurtam
5

Отслеживание одного объекта на карте с помощью Wialon Pro SDK

(edited by solveMe 13/11/2013 08:59:32)

Re: Отслеживание одного объекта на карте с помощью Wialon Pro SDK

Спасибо за подсказки! Наш сервер на предложенные Вами параметры вернул такую же картинку. Поэкспериментировал с другими параметрами и даже смог найти наш край. Я успел прочитать ман по координатам в гугл докс, еще до того как вы на него указали. Я понял, что в зависимости от уровня масштабирования карта делится на по сетке на кусочки чем больше уровень тем больше куски и их соответственно меньше. Но к стыду своему я до сих пор не втыкаю, как рассчитать какие параметры нужно указать, чтобы получить, к примеру, тайл владивостока с масштабированием уровня 8. Единственное, что приходит в голову: разделить 360 градусов на количество тайлов по одной из осей, и зная координату нужной точки определить в каком тайле она должна быть (проделать эти действия для широты и долготы). Но если для гугла, зная уровень масштабирования, я могу определить количество тайлов по оси: 2^(zoom_lvl), то у вас шкала уровней масштабирования сделана наоборот и я не знаю как быть.

В любом случае спасибо за помощь.

P.S. Забыл еще спросить одну вещь. Можно ли получать тайлы не из WebGIS а из других источников. В принципе WebGIS устраивает полностью, приморье нормально отрисовано только в нем и 2GIS, так просто спрашиваю на всякий случай.

Глянул OpenLayers. Можете поделиться если не секрет какой класс Вы использовали в качестве Layer? Мне показались подходящими Grid и OSM, последний вроде больше всего подходит.

6

Отслеживание одного объекта на карте с помощью Wialon Pro SDK

Re: Отслеживание одного объекта на карте с помощью Wialon Pro SDK

По поводу расчёта тайлов полезная информация http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames

Если не секрет, объясните зачем используя библиотеку для отрисовки карты (OpenLayers, Google Maps, Leaflet или любую другую) рассчитывать URL тайла самостоятельно? В каждой из библиотек этот функционал уже присутствует, например, в Google Maps (https://developers.google.com/maps/docu … eInterface) достаточно реализовать метод getTile который "выполняет функции главного контроллера, определяющего, какие фрагменты требуется загрузить в указанную область просмотра".

Пример реализации функции getTile (взят с http://sdk.wialon.com/playground/index. … urtam_map)

YourMapsType.prototype.getTile = function(coord, zoom, ownerDocument) {
        var url = "http://myserver.ru/map_gmaps/"+
            coord.x + "_" + coord.y + "_" + (17-zoom) + ".png";
        var img = ownerDocument.createElement("IMG");
        img.src = url;
        img.style.width = "256px";
        img.style.height = "256px";
        img.style.border = "0px";
        return img;
};
solveMe wrote:

Забыл еще спросить одну вещь. Можно ли получать тайлы не из WebGIS а из других источников. В принципе WebGIS устраивает полностью, приморье нормально отрисовано только в нем и 2GIS, так просто спрашиваю на всякий случай.

Вы можете создавать разные слои и каждый слой может брать информацию со своего источника. В вышеупомянутых библиотеках реализована возможность переключения между слоями

solveMe wrote:

Глянул OpenLayers. Можете поделиться если не секрет какой класс Вы использовали в качестве Layer? Мне показались подходящими Grid и OSM, последний вроде больше всего подходит.

Ваша реализация в ваших руках) Обратите внимание на OpenLayers.Layer.XYZ и OpenLayers.Layer.TMS

7

Отслеживание одного объекта на карте с помощью Wialon Pro SDK

Re: Отслеживание одного объекта на карте с помощью Wialon Pro SDK

Еще раз спасибо. Получилось! Использовал Openlayers.XYZ, только слегка изменил функцию getURL, поменял расчет уровня зума под ваши настройки. Когда оно заработало, был счастлив как 8-летний пацан, которому купили Сегу, lol.