KML -> GPolygon -> MKPolyline?

Итак, у меня есть пара (гигантских) KML, которые я успешно преобразовал в 180 с лишним полигонов/полилиний, закодированных Google-Maps. У кого-нибудь есть опыт или мысли о том, как взять их и превратить в объект MKPolyline, подходящий для использования в MapKit iOS4?

Вот что я сейчас смотрю.....

var sw = new GLatLng(25.8373770496571, -106.645646000733);
var ne = new GLatLng(36.50070452533, -93.50813136878951);
var bounds = new GLatLngBounds(sw, ne);
var mapZoomLevel = map.getBoundsZoomLevel(bounds);
var mapCenter = new GLatLng(31.16904078749355, -100.07688868476126)
map.setCenter(mapCenter, mapZoomLevel);

var polygon1 = new GPolygon.fromEncoded({
  polylines: [
    {points: "sxw}En~}dR@loC?puCAtt@[.......]@T^DE?z_@G^Jjw@G?",
     levels: "PBADDCCCDDACDDDDDDDBCB[.......]@EGFDEFDEDCCCDEDP",
     color: "#0000ff",
     opacity: 0.7,
     weight: 3,
     numLevels: 18,
     zoomFactor: 2}],
  fill: true,
  color: "#0000ff",
  opacity: 0.4,
  outline: true
});
map.addOverlay(polygon1);

person Greg Combs    schedule 10.07.2010    source источник


Ответы (1)


Ответ заключается в том, чтобы не выполнять этот тип преобразования из KML в закодированный GPolygon в MKPolyline. Шаг GPolygon совершенно не нужен. Пока у вас есть KML, а не сжатый KMZ, вы можете просто проанализировать XML, чтобы получить строку координат для заполнения MKPolyline.

Если вы действительно хотите перейти от закодированного GPolygon к MKPolyline, вам нужно декодировать GPolygon. Похоже, Стефано Булиани придумал, как это сделать.

Некоторыми из наиболее применимых примеров, которые я счел полезными, были неохотный блогер и Группа Наварра и В основном безобидно и (для синтаксического анализа) SeismicXML.

Все началось с попытки взять шейп-файл и запустить его в MapKit. Хотя это не совсем простое решение, теперь у меня есть рабочий (только для Mac) процесс. (Подсказка: шейп-файл для kml вас не устроил? Используйте ogr2ogr, часть структуры GDAL).

person Greg Combs    schedule 12.07.2010
comment
Более того, если у вас изначально есть KMZ, просто откройте его в десктопном приложении Google Earth и сохраните как KML. - person Greg Combs; 23.08.2010