При написании этого поста я понял, что существуют некоторые лицензионные ограничения на использование 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 .