Как определить местоположение изображения, возвращаемого API "изображения карты"?

HERE Maps (старые Nokia Maps) имеет множество API-интерфейсов, наиболее полезный из которых для настольных приложений, не связанных с Интернетом, выглядит так: API изображений карты. Этот API позволяет вам указать расположение центра и уровень масштабирования для получения изображения. вместе с размером изображения.

Как выполнить географическую привязку возвращенного изображения? Изображение определяется центром и уровнем масштабирования, а не ограничивающей рамкой или координатами углов. Если вам нужно отобразить изображение карты в качестве фона для других геолокационных данных, как найти координаты углов изображения, чтобы правильно отобразить карту?

Я предполагаю, что вы можете сделать это, используя уровень масштабирования, поэтому, например, квадратное изображение любого размера в пикселях при определенном уровне масштабирования будет иметь определенные реальные размеры. Однако это только предположение. Кажется, что в документации API нет никакого содержания адресация вообще привязка результатов карты.


person David    schedule 20.11.2013    source источник


Ответы (1)


Самый простой способ сделать это - использовать параметр nomrk и добавить два скрытых маркера пои для верхнего левого и нижнего правого углов - как в этом примере " nofrait of the Doofrait Английский канал. [50N, 2E - 51N, 3E]

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

В качестве альтернативы также существует API фрагментов карты (журнал -in required), в котором используются стандартные методы адресации Tile Map Service (TMS). Вы можете рассчитать необходимую плитку, используя следующее (пример кода на Java)

 public void calculatePosition(int latitude, int longitude, int zoom) {
         int p= Math.pow(2, zoom); double x= longitude /Math.PI; x=(x+1)/2;
         double y= latitude/Math.PI; y = (log(tan(pi/4.0+latitude/2.0))+1)/2; y = 1 - y;
         int column=(int) x*p; int row=(int)y*p;
         System.out.println("[zoom,col,row] = " + zoom + "," + col+ "," + row);
 }
person Jason Fox    schedule 20.11.2013
comment
Это выглядит великолепно - и на самом деле API Tile Map выглядит идеально. Спасибо! - person David; 20.11.2013
comment
И (извините) не могли бы вы проголосовать за меня, пожалуйста? Мне нужно 5 повторов в этом теге, чтобы предложить некоторые правки и синоним тега, и я раньше не задавал вопросов о картах Nokia / Here. - person David; 20.11.2013