Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.07.2009, 20:55
CblP вне форума Посмотреть профиль Отправить личное сообщение для CblP Посетить домашнюю страницу CblP Найти все сообщения от CblP
  № 1  
Ответить с цитированием
CblP

Регистрация: Aug 2008
Сообщений: 69
Отправить сообщение для CblP с помощью ICQ
По умолчанию Google Map Страны

Всем привет.

Подключил во Флексе Google Map. Нужно закрасить страны.

Нашел пример где с помощью Polygon (многоугольник) человек закрашивает страны.

Код AS3:
var polygon:Polygon = new Polygon([  new LatLng(-61.686667999999997, 17.024441000000138),
    new LatLng(-61.731116999999983, 17.547222000000090),
    new LatLng(0, 0)]);
 
  map1.addOverlay(polygon);
Я бы его передрал под свои нужды, но там контуры стран оч плохо обведены. Порысля еще в инете и нашел дамп БД (MySQL) в котором есть получше обведены страны.

Собственно вопрос - координаты стран. В этом дампе БД координаты стран в таком заманчивом формате:

тип поля GEOMETRY и такое вот в него вписывается инсертом.

GeometryFromText('MULTIPOLYGON(((-61.686667999999997 17.024441000000138 ,-61.738059999999962 16.989718999999980 ,-61.829169999999920 16.996944000000042 ,-61.876113999999973 17.016941000000088 ,-61.880561999999941 17.019721999999945 ,-61.883613999999966 17.023609000000079 ,-61.885833999999988 17.028053000000057 ,-61.887222000000008 17.033054000000106 ,-61.891112999999962 17.094165999999973 ,-61.887222000000008 17.105273999999952 ,-61.884170999999981 17.109721999999920 ,-61.832779000000016 17.163886999999988 ,-61.826392999999996 17.167220999999984 ,-61.794448999999986 17.163330000000087 ,-61.784172000000012 17.158332999999971 ,-61.744170999999938 17.137217999999962 ,-61.674171000000001 17.093609000000072 ,-61.670279999999934 17.090275000000076 ,-61.668892000000028 17.084998999999982 ,-61.666388999999981 17.045830000000080 ,-61.667502999999954 17.040553999999986 ,-61.682502999999997 17.027495999999985 ,-61.686667999999997 17.024441000000138 )),((-61.729171999999949 17.608608000000004 ,-61.731116999999983 17.547222000000090 ,-61.732779999999991 17.541111000000001 ,-61.738891999999964 17.540554000000100 ,-61.751944999999921 17.549442000000056 ,-61.815558999999951 17.583885000000066 ,-61.834723999999994 17.588608000000079 ,-61.839447000000007 17.586665999999980 ,-61.842781000000002 17.582775000000083 ,-61.847503999999958 17.580830000000105 ,-61.853057999999976 17.583054000000061 ,-61.856673999999998 17.592498999999975 ,-61.873894000000007 17.688889000000017 ,-61.875281999999970 17.698607999999979 ,-61.873062000000004 17.703888000000063 ,-61.850280999999939 17.722775000000127 ,-61.845557999999983 17.724998000000028 ,-61.839171999999962 17.724720000000104 ,-61.787223999999924 17.700554000000068 ,-61.783614999999941 17.697220000000073 ,-61.743339999999932 17.653053000000000 ,-61.740279999999984 17.649166000000093 ,-61.738059999999962 17.644722000000115 ,-61.731673999999941 17.624996000000067 ,-61.729171999999949 17.608608000000004 )))',-1)

*GeometryFromText - это какой-то метод MySQL который преобразует строку в казяблики.

и собственно вот такую строку я и не могу понять как в полигон загнать, (если это реально) или же её нужно как-то преобразовать?

В общем может кто-то стыкался с таким вопросом. Буду рад любой помощи.

ЗЫ Ссылочки: это на исходники того примера: http://gvlt.wordpress.com/2008/05/17...aps-flash-api/
Это на дамп базы: http://blog.newsplore.com/wp-content...02/wb_dump.zip
и на статью автора базы там 2 части:
http://blog.newsplore.com/?p=531&cpage=1#comment-252
http://blog.newsplore.com/?p=737

*GeometryFromText - это какой-то метод MySQL который преобразует строку в казяблики.

Старый 07.07.2009, 21:15
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А контур какой страны из этого должен получится?
__________________
Hell is the possibility of sanity

Старый 07.07.2009, 21:45
CblP вне форума Посмотреть профиль Отправить личное сообщение для CblP Посетить домашнюю страницу CblP Найти все сообщения от CblP
  № 3  
Ответить с цитированием
CblP

Регистрация: Aug 2008
Сообщений: 69
Отправить сообщение для CblP с помощью ICQ
Если кратко, то как заставить гуглмап хавать MULTIPOLYGON???

wvxvw, там в БД контуры всех стран, хочу сделать выпадающее список в котором список всех стран, выбираешь страну из списка - она подсвечивается.

Старый 07.07.2009, 22:13
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну я так понимаю, что LatLng - это что-то вроде Point, строка из эскуеля - тоже состоит из пар, которые вполне похожи на точки - просто попробуйте сложить их в массив и отрисовать так, как если бы первая цифра была координатой по Х, а вторая - по У - и посмотрите, что получится.
__________________
Hell is the possibility of sanity

Старый 08.07.2009, 14:01
CblP вне форума Посмотреть профиль Отправить личное сообщение для CblP Посетить домашнюю страницу CblP Найти все сообщения от CblP
  № 5  
Ответить с цитированием
CblP

Регистрация: Aug 2008
Сообщений: 69
Отправить сообщение для CblP с помощью ICQ
MULTIPOLYGON - это набор полигонов, например когда страна состоит из нескольких островов, то её контур обводится несколькими полигонами.

Эти пары (-61.686667999999997 17.024441000000138 ,....), это и есть точки аля долгота и ширина.

aksios, Перечитал статью и понял что нужно писать парсер, (потому как автор статьи написал парсер который ему АS3 код сгенерил), потом кодировать точки, потом распихивать по 2-м таблицам БД.
wvxvw, да ты прав. Но Гуглмап кушает еще и закодированные точки. http://code.google.com/intl/ru/apis/...algorithm.html
т.е. контур - это же ломаная линия, её можно закодировать. И получается что каждый полигон можно закодировать в строку.
Из линки
Точки: (38.5, -120.2), (40.7, -120.95), (43.252, -126.453)
Закодированная ломаная линия: _p~iF~ps|U_ulLnnqC_mqNvxq`@

Потом эти закодированные линии заганяются в гугл мап примерно так:
Код AS3:
			var polygons : Array = [];
			polygons.push(new Feature(Polygon.fromEncoded([new EncodedPolylineData('wa|fBrdowJexNndf@{iJ{bQ`cZs`T',32,'BAAB',4),new EncodedPolylineData('wdnjBhnwwJt~CfeWerV`|BnrQib[',32,'BAAB',4)]),{pop2005: 83039, area: 44 }));
map.addOverlay(polygons[i].shape);
- это из того исходника.

Зачем мне это кодировать? Получается что у меня Будет таблица Страны, и таблица координаты_стран. в таблице координаты стран будут вот эти закодированные полигоны. Просто если точки не закодировать то кол-во записей в таблице Координаты стран оч будет большим и при выборках все будет глючить.

Это к чему я пришел на данный момент. Проще способа пока не вижу. может Вы подскажете.

Старый 07.07.2009, 23:01
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 6  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Сыр, если внимательно почитать приведенную статью там линки все объясняют. причем, по русски. Может я не понял, в чем у Вас затык, но эти пары - широта и долгота для точек.

Старый 08.07.2009, 14:20
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
С чего бы это глючить? Стран в мире совсем не так уж и много что-то около 200.
Как-то от меня смысл кодирования ускользает... а зачем, если для флеша информацию не обязательно передавать в строковом формате?
__________________
Hell is the possibility of sanity

Старый 08.07.2009, 14:32
CblP вне форума Посмотреть профиль Отправить личное сообщение для CblP Посетить домашнюю страницу CblP Найти все сообщения от CblP
  № 8  
Ответить с цитированием
CblP

Регистрация: Aug 2008
Сообщений: 69
Отправить сообщение для CblP с помощью ICQ
Например для Algeria 1240 точек. Т.е. это будет выборка 1240 записей с БД. Это только для Алжира.

Старый 08.07.2009, 15:49
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от CblP Посмотреть сообщение
Например для Algeria 1240 точек. Т.е. это будет выборка 1240 записей с БД. Это только для Алжира.
1240 точек = 2480 х 8 байт (если записывать координату, как 8 байт с плавающей точкой, без оптимизации) = 19840 байт = 19.375 Кб - это что, много? это примерно то же самое, что гиф-картинка размером 30х30...
А при том, что АМФ для передачи чисел с плавающей точкой использует алгоритм позволяющий это еще и поджать немного...
И каким образом у вас получилось 1240 записей в БД, когда достаточно 1 блоб для этого... т.е. 1 раз перегнать все данные в АМФ, и данные по каждой стране уже закодированые хранить в таблице.
__________________
Hell is the possibility of sanity

Старый 10.07.2009, 20:55
CblP вне форума Посмотреть профиль Отправить личное сообщение для CblP Посетить домашнюю страницу CblP Найти все сообщения от CblP
  № 10  
Ответить с цитированием
CblP

Регистрация: Aug 2008
Сообщений: 69
Отправить сообщение для CblP с помощью ICQ
В общем распарсил ручками Украину в АS3 код. Получилось сколько полигонов - столько массивов. Который впихнул в класс, в этом же классе формируются полигоны, которые потом читаются в главном файле и отрисовываются на карте.
см. аттач

wvxvw, Спасбо за подсказку! Думаю сделать так:
в БД будет таблица
Coordinates
id - id записи
id_country - id страны с соседней таблицы
poligon - тип BLOB (правильно?), и тут будет сжатый с помощью АМФ массив координат полигона.

Т.е. я отпаршу все страны в массивы, их сожму с помощью АМФ и сохраню в БД.
А потом со своего приложения просто буду дергать эти данные с БД. И раскодировать?

Один вопрос, через пхп с БД получится общаться или что-то другое посоветуете?
Вложения
Тип файла: rar map.rar (43.5 Кб, 52 просмотров)

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:05.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.