При написании этого поста я понял, что существуют некоторые лицензионные ограничения на использование Google Static Maps API в мобильных приложениях… В любом случае, я публикую его только для исследовательских целей, но я должен предупредить вас об этом ограничении:
http://code.google.com/intl/en/apis/maps/faq.html#mapsformobile
Краткий обзор API Google Static Maps
Этот API позволяет получить изображение на основе URL-адреса и нескольких параметров, которые можно передать для получения персонализированной карты. Вы можете играть с масштабированием, типом карты, размером изображения (шириной, высотой), маркерами в местах расположения карты и т. Д. Существует ограничение, которое необходимо учитывать, использование API зависит от лимит запросов — 1000 уникальных (разных) запросов изображений на зрителя в день, что является большим количеством изображений … но если вам нужно больше, есть также лицензия Premium. За дополнительной информацией:
http://code.google.com/intl/en/apis/maps/documentation/staticmaps/
ОК, мы делаем следующее:
- Создайте метод, который получает точку широты и долготы и размер изображения в качестве параметров.
- Запросите изображение карты, используя URL-адрес: http://maps.googleapis.com/maps/api/staticmap , и добавив некоторые параметры.
- Создайте объект Image и верните его, чтобы мы могли показать его на экране.
Руки в лаборатории
Ниже приводится метод, о котором мы говорили. У него есть параметры широты и долготы, а также ширины и высоты запрашиваемого нами изображения. Широта и долгота могут быть получены с помощью Location API, а ширина и высота могут быть получены с помощью класса Canvas.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
public Image getMap( double lat, double lon, int width, int height) throws IOException { url += "?zoom=15&size=" + width + "x" + height; url += "&maptype=roadmap" ; url += "&markers=color:red|label:A|" + lat + "," + lon; url += "&sensor=true" ; HttpConnection http = (HttpConnection) Connector.open(url); InputStream in = null ; byte [] imgBytes = null ; try { http.setRequestMethod(HttpConnection.GET); in = http.openInputStream(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte [] buffer = new byte [ 1024 ]; int n = 0 ; while ((n = in.read(buffer)) != - 1 ) { bos.write(buffer, 0 , n); } imgBytes = bos.toByteArray(); } finally { if (in != null ) { in.close(); } http.close(); } Image img = Image.createImage(imgBytes, 0 , imgBytes.length); return img; } |
Как вы можете видеть, получить изображение карты довольно просто. Получение — это чистый HTTP-запрос.
Затем вы можете найти изображение, полученное с помощью Google Static Maps из местоположения в моем родном городе.
Хорошо, вы только что увидели, как просто было бы, если бы не было ограничений … Что вы думаете об этом ограничении? Это немного сбивает с толку, не так ли?
В любом случае, нам нужно найти другой способ показывать карты в наших мобильных приложениях.
Ссылка: Google Static Maps API и JavaME от нашего партнера JCG Алексиса Лопеса в блоге Java и ME .