![]() |
|
||||||||||
|
|
|
|||||
|
Всем привет.
Подключил во Флексе Google Map. Нужно закрасить страны. Нашел пример где с помощью Polygon (многоугольник) человек закрашивает страны. var polygon:Polygon = new Polygon([ new LatLng(-61.686667999999997, 17.024441000000138), new LatLng(-61.731116999999983, 17.547222000000090), new LatLng(0, 0)]); map1.addOverlay(polygon); Собственно вопрос - координаты стран. В этом дампе БД координаты стран в таком заманчивом формате: тип поля 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 который преобразует строку в казяблики. |
|
|||||
|
Если кратко, то как заставить гуглмап хавать MULTIPOLYGON???
wvxvw, там в БД контуры всех стран, хочу сделать выпадающее список в котором список всех стран, выбираешь страну из списка - она подсвечивается. |
|
|||||
|
Modus ponens
|
Ну я так понимаю, что LatLng - это что-то вроде Point, строка из эскуеля - тоже состоит из пар, которые вполне похожи на точки - просто попробуйте сложить их в массив и отрисовать так, как если бы первая цифра была координатой по Х, а вторая - по У - и посмотрите, что получится.
__________________
Hell is the possibility of sanity |
|
|||||
|
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`@ Потом эти закодированные линии заганяются в гугл мап примерно так: 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); Зачем мне это кодировать? Получается что у меня Будет таблица Страны, и таблица координаты_стран. в таблице координаты стран будут вот эти закодированные полигоны. Просто если точки не закодировать то кол-во записей в таблице Координаты стран оч будет большим и при выборках все будет глючить. Это к чему я пришел на данный момент. Проще способа пока не вижу. может Вы подскажете. |
|
|||||
|
loading 50%
|
Сыр, если внимательно почитать приведенную статью там линки все объясняют. причем, по русски. Может я не понял, в чем у Вас затык, но эти пары - широта и долгота для точек.
|
|
|||||
|
Modus ponens
|
С чего бы это глючить? Стран в мире совсем не так уж и много
что-то около 200.Как-то от меня смысл кодирования ускользает... а зачем, если для флеша информацию не обязательно передавать в строковом формате?
__________________
Hell is the possibility of sanity |
|
|||||
|
Например для Algeria 1240 точек. Т.е. это будет выборка 1240 записей с БД. Это только для Алжира.
|
|
|||||
|
Modus ponens
|
Цитата:
А при том, что АМФ для передачи чисел с плавающей точкой использует алгоритм позволяющий это еще и поджать немного... И каким образом у вас получилось 1240 записей в БД, когда достаточно 1 блоб для этого... т.е. 1 раз перегнать все данные в АМФ, и данные по каждой стране уже закодированые хранить в таблице.
__________________
Hell is the possibility of sanity |
|
|||||
|
В общем распарсил ручками Украину в АS3 код. Получилось сколько полигонов - столько массивов. Который впихнул в класс, в этом же классе формируются полигоны, которые потом читаются в главном файле и отрисовываются на карте.
см. аттач wvxvw, Спасбо за подсказку! Думаю сделать так: в БД будет таблица Coordinates id - id записи id_country - id страны с соседней таблицы poligon - тип BLOB (правильно?), и тут будет сжатый с помощью АМФ массив координат полигона. Т.е. я отпаршу все страны в массивы, их сожму с помощью АМФ и сохраню в БД. А потом со своего приложения просто буду дергать эти данные с БД. И раскодировать? Один вопрос, через пхп с БД получится общаться или что-то другое посоветуете? |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|