MapBasic таймер
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 03 фев 2012, 12:52
- Репутация: 0
MapBasic таймер
Здравствуйте, стоит задача отображения местоположения точек из БД PostgreSQL.
MapInfo с БД соединил, точки отображаются, но при изменении (или добавлении) данных в таблице, на карте (и в самой программе) ничего не меняется. При вызове функции Server Refresh все обновляется, но не могу придумать, как сделать, чтобы эта функция вызывалась раз в секунду.
MapInfo с БД соединил, точки отображаются, но при изменении (или добавлении) данных в таблице, на карте (и в самой программе) ничего не меняется. При вызове функции Server Refresh все обновляется, но не могу придумать, как сделать, чтобы эта функция вызывалась раз в секунду.
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: MapBasic таймер
Предлагаю Server Refresh разместить в обработчике событий изменения изображения в окне карты - WinChangedHandler. Изменение масштаба или сдвиг изображения будет обновлять отображаемые данные.
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 03 фев 2012, 12:52
- Репутация: 0
Re: MapBasic таймер
Подходит, но нужно, чтобы таблица обновлялась примерно раз в секунду, чтобы текущее местоположение отображалось. И человек следил за отображением этого без всяких действий с его стороны.
Пробовал обновлять в бесконечном цикле, но это убивает MapInfo... Может, можно в другом потоке запустить?
Может еще какие-нибудь идеи?
Пробовал обновлять в бесконечном цикле, но это убивает MapInfo... Может, можно в другом потоке запустить?
Может еще какие-нибудь идеи?
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: MapBasic таймер
Сделать DDE клиента на C/Delphi/VB/... . Mapinfo в качестве DDE сервера.iBorkk писал(а):...Может еще какие-нибудь идеи?
На клиенте таймер, через DDE отправлять Mapinfo команду Refresh.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: MapBasic таймер
А стандартный механизм не делает искомое? Я понимаю, что есть различие между простой таблицей и таблицей из БД, но может все таки сработает?
Код: Выделить всё
Add Map
[ Window window_id ] [ Auto ]
Layer table [, table [ Animate ]
Using Animation Layers to Speed Up Map Redraws
If the Add Map statement includes the Animate keyword, the added layer becomes a special layer known as the animation layer. When an object in the animation layer is moved, the Map window redraws very quickly, because MapInfo Professional only redraws the one animation layer.
For an example of animation layers, see the sample program ANIMATOR.MB.
The animation layer is useful in real-time applications, where map features are updated frequently. For example, you can develop a fleet-management application that represents each vehicle as a point object. You can receive current vehicle coordinates by using GPS (Global Positioning Satellite) technology, and then update the point objects to show the current vehicle locations on the map. In this type of application, where map objects are constantly changing, the map redraws much more quickly if the objects being updated are stored in the animation layer instead of a conventional layer.
The following example opens a table (Vehicles) and makes the table an animation layer:
Open Table "vehicles" Interactive
Add Map Layer vehicles Animate
In general, the last table to be followed by the Animate keyword will be the animation layer. Only one layer at a time can be the Animation layer.
To terminate the animation layer processing, issue a Remove Map statement Layer Animate statement.
Animation layers have special restrictions. For example, users cannot use the Info tool to click on objects in an animation layer. Also, each Map window can have only one animation layer. For more information about animation layers, see the MapBasic User's Guide
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: MapBasic таймер
Сомневаюсь, т.к. Animate влияет только на скорость отображения/перерисовки анимированного слоя в карте. "... Speed Up Map Redraws...", т.е. отображения объектов из файла таблицы на окне карты.
А здесь проблема в постоянном обновлении локальной таблицы из таблицы, хранящейся на сервере.
Если только, таблица есть не локальная копия, а "хранимая в памяти" - тогда должно сработать.
А здесь проблема в постоянном обновлении локальной таблицы из таблицы, хранящейся на сервере.
Если только, таблица есть не локальная копия, а "хранимая в памяти" - тогда должно сработать.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: MapBasic таймер
Т.е. проблема в обновлении данных именно в локальной копии, которую мапифно создает для таблиц с сервера? Я думал они эту часть давно поправили и работают с серверами без лишних "прокладок"...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя