2013-03-25 2 views
1

Я хотел бы нарисовать заполненный многоугольник на iPhone с картой Google (версия 1.1.1, последняя).Как рисовать заполненный многоугольник в Google Maps SDK для iOS

Любой знает, как сделать так КСН:

(Мой код на Android)

mMap.addPolygon(new PolygonOptions() 
      .addAll(latLngList) 
      .fillColor(Color.BLUE) 
      .strokeColor(Color.RED) 
      .strokeWidth(3)); 

С уважением,

PS: Если у вас есть много решений, имейте в виду, что я есть много полигонов для рисования.

ответ

1

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

https://code.google.com/p/gmaps-api-issues/issues/detail?id=5070

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

Еще один вариант - добавить еще один вид в верхней части экрана карты и нарисовать в нем полигоны, а затем обновить их всякий раз, когда перемещается представление карты. Невозможно полностью синхронизировать другой вид с видом карты, поэтому ваши полигоны немного отстанут от панорамирования/масштабирования, но это может также быть для вас в качестве временного обходного пути.

UPDATE

Это лишь некоторые случайные идеи, чтобы попробовать для основного наложения подхода, я не уверен, что если они будут работать, но они могли бы вы начали:

Я хотел бы предложить преобразования углы лата/lon прямоугольника в MKMapPoint (с использованием MKMapPointForCoordinate). Они эквивалентны системе координат Google на уровне масштабирования 20.

Затем вы можете использовать соотношение сторон ширины/высоты прямоугольника в координатах MKMapPoint, чтобы определить соотношение сторон вашего наземного наложения UIImage. Когда у вас есть соотношение сторон, вам просто нужно поэкспериментировать с фактическими размерами (т. Е. Угадать ширину, рассчитать высоту из соотношения сторон), чтобы найти ту, которая выглядит нормально. Чем больше это, тем мельче будет детали вашего прямоугольника, но чем больше памяти он будет использовать, тем быстрее производительность будет. Также вы можете столкнуться с жестким ограничением в каком-то размере - я предполагаю, что UIImage преобразуется в SDK Google Maps в текстуру, а текстуры имеют максимальный размер 2048x2048 на iPhone 3GS +.

Затем, используйте что-то похожее на How to setRegion with google maps sdk for iOS?, чтобы рассчитать уровень масштабирования и центр lat/lon. Вместо ширины/высоты просмотра карты вы должны использовать ширину/высоту UIImage, и вы должны использовать границы вашего прямоугольника вместо границ желаемого вида. Вам также не нужно будет вычислять масштаб как по ширине, так и по высоте (поскольку масштаб должен быть одинаковым), поэтому просто используйте один из них. Вместо того, чтобы создавать камеру с уровнем масштабирования и центром lat/lon, установите их на GMSGroundOverlayOptions. Также установите оверлей земли anchor в центр изображения (т.е. 0,5, 0,5).

Выше описано, как добавить один объект GroundOverlay на каждый прямоугольник. Если у вас много перекрывающихся или близких прямоугольников, вы, вероятно, могли бы объединить их в один UIImage, но это было бы немного сложнее.

+0

Спасибо, Саксон, я уже видел вас в Почте Google Map Circle. Я уже принял решение рисовать полигон в UIImage с CGContextFillRect, и я тестирую рендеринг многих groundedOverlay ... Когда вы считаете, что Google Maps для iOs team сделает это возможным? –

+0

И я застрял, столкнувшись с этой проблемой: если я хочу нарисовать groundedOverlay с точной координатой, как узнать, какой размер дать оверлейному изображению и какой масштаб увеличить, чтобы дать возможность точно соответствовать моей карте? –

+0

Привет, Томас, в какой форме находятся ваши полигоны? Являются ли они списком lat/lon, являются ли они прямоугольниками или просто общими нерегулярными фигурами? Я понятия не имею, когда или когда Google выпустит этот запрос функции. Кажется, что они делают ежемесячные релизы (см. Https://developers.google.com/maps/documentation/ios/releases), поэтому, возможно, в следующем месяце выйдет еще один релиз, но я не знаю, что они могут выбрать положить в нее. –

Смежные вопросы