Google Планета Земля Определение уровня масштабирования по ограничительной рамке

У меня есть приложение Windows Forms, использующее Google Earth, где пользователи могут рисовать многоугольник на карте, который используется в качестве геозоны.

Что я хотел бы сделать, так это иметь возможность масштабировать многоугольник, чтобы он хорошо помещался на экране одним нажатием кнопки. Этакая функция масштабирования.

Найти центр многоугольника и настроить камеру Google Планета Земля на эту широту/долготу очень просто.

Что мне нужно, так это алгоритм, который берет ограничивающую рамку широты\длины, высоты\ширины экрана, а затем определяет высоту для установки камеры.

У кого-нибудь есть этот алгоритм или знает, где его можно найти?

Спасибо!!


person Dominic    schedule 14.07.2010    source источник


Ответы (1)


Чтобы «приблизиться к многоугольнику» или любому другому KmlObject, вероятно, проще всего использовать earth-api-utility-library.

См. методы createBoundsView, setToBoundsView и особенно flyToObject

Например, где ge — это объект GEPlugin, а polygon — это KmlPolygon.

var gex = new GEarthExtensions(ge);
gex.util.flyToObject(polygon, { boundsFallback: true, aspectRatio: 1 } );
person Fraser    schedule 19.07.2010
comment
Есть несколько проблем с этим. Во-первых, чтобы найти половину длины хорды, вы должны использовать var dist = r * Math.sin(d / 2), так как радиус - это гипотенуза (а не смежная сторона) соответствующего треугольника. Во-вторых, средняя широта/долгота, которую вы используете в качестве центра, во многих случаях не будет правильной (например, по линиям, превышающим число полушарий). - person natevw; 24.06.2012
comment
Честно говоря, я никогда им не пользовался, он взят отсюда: groups.google.com/forum/?fromgroups#!topic/ — сейчас я бы посоветовал использовать библиотеку earth-api-utility [ code.google.com/p/earth-api-utility-library/wiki/ - person Fraser; 28.06.2012