JavaME:Google静态地图API

无论您是需要基于位置的应用程序的地图还是只是出于娱乐目的,都可以使用有史以来最简单的方法:Google Static Maps API。 在这篇文章中,我们将看到如何从纬度和经度获得地图作为图像。 可以使用Location API获得纬度和经度,我们将不在本文中讨论。

在撰写本文时,我意识到在移动应用程序中使用Google Static Maps API存在一些许可限制…无论如何,我只是出于研究目的而发布它,但我必须警告您注意以下限制:

 
http://code.google.com/intl/zh-CN/apis/maps/faq.html#mapsformobile

Google Static Maps API快速审核
 
使用此API,您可以基于URL和一些参数(可以传入以获得个性化地图)来获取图像。 您可以使用缩放,地图类型,图像大小(宽度,高度),地图位置处的标记等来玩。您必须记住一个限制,使用API​​需遵守每天每位查看者最多只能查询1000个独特(不同)图像请求,其中包含大量图像…但是如果您需要更多图像,还可以使用Premium许可证。 欲获得更多信息:

http://code.google.com/intl/zh-CN/apis/maps/documentation/staticmaps/

好的,我们要做的是:

  • 创建一个方法,该方法接收纬度和经度点以及图像的大小作为参数。
  • 使用以下网址请求地图图像: http : //maps.googleapis.com/maps/api/staticmap ,并添加一些参数。
  • 创建一个Image对象并返回它,以便我们可以在屏幕上显示它。

动手实验室

以下是我们正在谈论的方法。 它具有用于纬度和经度的参数,也用于我们请求的图像的宽度和高度的参数。 可以使用Location API检索纬度和经度,并可以使用Canvas类检索宽度和高度。

public Image getMap(double lat, double lon, int width, int height) 
throws IOException 
{String url = "http://maps.google.com/maps/api/staticmap";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静态地图从我家乡的某个位置检索到的图像。

好的,您刚刚看到如果不存在限制,那将是多么简单……您如何看待该限制? 这有点令人困惑,不是吗?

无论如何,我们将需要寻找另一种在我们的移动应用程序上显示地图的方法。

参考:来自Java和ME博客的JCG合作伙伴 Alexis Lopez的Google Static Maps API和JavaME 。


翻译自: https://www.javacodegeeks.com/2012/05/javame-google-static-maps-api.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在ASP.NET中实现OAuth2.0(一)之了解OAuth

1、什么是OAuth2.0 是一个开放授权标准,允许用户让第三方应用访问该用户在某一个网站或平台上的私密资源(如照片、视频、联系人等),而无须将用户名和密码提供给第三方应用 2、OAuth2.0授权模式 授权码模式(authorizati…

mysql日期条件如何应用_MySQL如何使用时间作为判断条件

背景:在开发过程中,我们经常需要根据时间作为判断条件来查询数据,例如:当月,当日,当前小时,几天内......1. 当月我们只需要使用一个mysql的month(date)函数即可实现。(注意判断年份)month(date)…

深入探讨JS中的数组排序函数sort()和reverse()

最近在研究Javascript发现了其中一些比较灵异的事情。有点让人感到无语比如: alert(typeof( NaN NaN));//结果为假。 alert(typeof( NaN ! NaN));//结果为真。 嘿嘿,当然这个不是这篇文章要讨论的!!开始我们的正文 首先,我们来看一下JS中sor…

带有谓词的Java中的功能样式-第1部分

您一直在听到将要席卷全球的函数式编程,而您仍然坚持使用普通Java? 不用担心,因为您已经可以在日常Java中添加一些功能样式。 此外,它很有趣,可以节省许多代码行并减少错误。 什么是谓词? 实际上&#xff…

宝塔添加多占点_宝塔面板启用WordPress多站点子域名、子目录

其实在很早以前,陌小雨就听说了 wordpress 的多站点功能,不过因为不清楚,所以懒得折腾,这不这几天闲着蛋疼,好好研究了下这玩意,用起来的感觉还是相当不错的,总结起来就是如果你准备开始用 word…

centos 6.5下安装文件上传下载服务

centos 6.5下安装文件上传下载服务 由于每次在CentOS中要下载一些配置文件到物理机,和上传一些文件到服务器,导致来回的开启ftp软件有点麻烦,这里我们可以使用文件上传下载服务,来解决上传和下载的问题。 1.登录服务器 2.执行命令…

Jenkins 入门系列--jenkins 介绍

第一章 Jenkins是什么? Jenkins 是一个可扩展的持续集成引擎。 主要用于: l 持续、自动地构建/测试软件项目。 l 监控一些定时执行的任务。Jenkins拥有的特性包括: l 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支…

在方法参数上使用final关键字

经过一些自己的混淆,最终博客方法的具体含义(最终声明的方法参数)将对此博客条目进行澄清。 至少可以将方法参数上的final关键字视为Java编译器的指示符,表明该参数不能重新分配给另一个引用。 Java参数处理始终是“按值调用” &a…

PHP MySQLi 增删改查

最近几天,我们一直在学习利用MySQLi访问数据库并对其中的数据进行操作。今天给大家展现一个完整的例子,我们来制作一个新闻发布系统,利用MySQLi来操作数据库,实现对新闻的添加、修改、删除、查询等基本功能。(以下代码…

20162303《程序设计与数据结构》第一周学习总结

学号 2016-2017-2 《程序设计与数据结构》第1周学习总结 教材学习内容总结 本周学习了基本的JAVA知识,虽然比较基础,但是在实际过程中还是出现了许许多多的问题,代码一遍遍的敲错,又一遍遍的修改,刚开始甚至不会切换模…

Java EE与NoSQL的未来

自一段时间以来,我一直在关注NoSQL的近期发展势头,似乎这个流行语也引起了企业Java界的某种关注。 即EclipseLink 2.4开始支持MongoDB和Oracle NoSQL 。 将EclipseLink作为JPA参考实现,您可能想知道这对Java EE 7意味着什么。这里简短说明&am…

【C/C++开发】C语言实现函数可变参数

函数原型: int printf(const char *format[,argument]...) 返 回 值: 成功则返回实际输出的字符数,失败返回-1. 函数说明: 在printf()函数中,format后面的参数个数不确定,且类型也不确定,这些参数都存放在栈内.调用…

java postgresql json_java – 将PostgreSQL JSON列映射到Hibernate值类...

See PgJDBC bug #265.PostgreSQL对数据类型转换过于严格,非常严格.它不会隐式地将文本转换为类似文本的值,例如xml和json.解决此问题的严格正确方法是编写使用JDBC setObject方法的自定义Hibernate映射类型.这可能有点麻烦,所以你可能只想通过创建一个较弱的强制转换来使Postgr…

面向接口编程详解(三)——模式研究

通过前面两篇,我想各位朋友对“面向接口编程”的思想有了一定认识,并通过第二篇的例子,获得了一定的直观印象。但是,第二篇中的例子旨在展示面向接口编程的实现方法,比较简单,不能体现出面向接口编程的优势…

错误学习:Java + OSGi

最近,我致力于在OSGi环境中使Apache Hive工作。 虽然没有被证明是小菜一碟(软件对吗?。。为什么我不感到惊讶? ),它引导我解决了各种Java和OSGi错误。 在这里,我列出了其中一些让我有些吃力的东…

iOS多Targets管理

序言: 个人不善于写东西,就直奔主题了。 其实今天会注意到多targets这个东西,是因为在学习一个第三方库FBMemoryProfiler的时候,用到了,所以就搜索了一些相关资料,就在这里记录一下。 可能每个人都会遇到这…

优化的34条定律

1.Minimize HTTP Requests 减少HTTP请求 图片、css、script、flash等等这些都会增加http请求数,减少这些元素的数量就能减少响应时间。把多个JS、CSS在可能的情况下写进一个文件,页面里直接写入图片也是不好的做法,应该写进CSS里,…

休眠提示:排序和排序

让我们介绍另一个休眠性能提示。 你还记得以前的休眠的模式后 ? 我们有一个与一对多协会有关的星际飞船和军官。 Entity public class Starship {Id GeneratedValue(strategyGenerationType.SEQUENCE) private Long id;public Long getId() {return id;}protected v…

java 基本类型 线程安全_java的基本类型和i++线程安全性的深入解析

在java中,除了long和double的8个字节、64位比特的变量外,其他的基本变量都是原子性的。java存储模型要求获取和存储操作都为原子性,但是对于非volatile的long和double变量,jvm允许将64位的读或写划分为两个32位的操作。如果读和写…

MySQL配置文件mysql.ini参数详解

my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数。 my.ini分为两块:Client Section和Server Section。 Client Section用来配置MySQL客户端参数。 要查看配置参数可以用下面…