Android GoogleMap 谷歌地图从零开始
说明
由于国内使用v2最新的谷歌地图有很多限制,所有如果要在真机上测试运行要做一些准备
准备1:
vpn必不可少啦 推荐cloud vpn或者betternet都是不错的免费vpn
准备2:
由于最新的googlemap需要google 服务的支持,而国内因为访问不了谷歌,国内的所有操作系统几户都阉割掉了这部分,你有两个选择 :
a 用小米测试机(不用root)
b 选择一个能root的手机
然后就是安卓谷歌三件套,建议直接360手机市场下载谷歌安装器一键全安装了,这个需要root权限,因为要把这些app加到系统app内.
准备3
申请一个appkey
方法:
快速简便的方式:使用 Android Studio 为您创建的 google_maps_api.xml 文件中提供的链接(新建一个map project时候会自动生成)
复制google_maps_api.xml文件中提供的链接,将其粘贴到您的浏览器内。该链接跳转至 Google Developers Console 并通过 URL 参数提供信息,从而减少所需的手动输入。
按照说明在控制台上新建一个项目,或者选择某个现有项目。
为您的控制台项目创建一个 Android API 密钥。
复制生成的 API 密钥,返回 Android Studio,将该 API 密钥粘贴到 google_maps_api.xml 文件的 <string> 元素中。
速度略慢的方式:使用 Android Studio 为您创建的 google_maps_api.xml 文件中提供的凭据:
复制 google_maps_api.xml 文件中提供的凭据。
转至浏览器中的 Google Developers Console。
使用复制的凭据将您的应用添加至某个现有 API 密钥,或者新建一个 API 密钥。 如需了解更多详情,请参阅完整流程。
获取 API 密钥的完整流程:如果以上两种方式对您的情况均不奏效,请执行完整流程。
https://developers.google.com/maps/documentation/android-api/start
一切搞定之后就可以编程了把key写在上图的YOUR_KEY_HERE位置上,然后就可以编程了,如果你需要官方的demo:
https://github.com/googlemaps/android-samples
贴一些有用的代码
1定位获得location(包含经纬度)
- LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
- Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
- if (myLocation == null) {
- Criteria criteria = new Criteria();
- criteria.setAccuracy(Criteria.ACCURACY_COARSE);
- String provider = lm.getBestProvider(criteria, true);
- myLocation = lm.getLastKnownLocation(provider);
- }
- return myLocation;
google前几年新出的位置api:http://stackoverflow.com/questions/30253123/blue-dot-and-circle-is-not-shown-on-mylocation-using-android-fused-location-api/30255219#30255219
2由经纬度得的地名
- public static String getAddress(Context context, double latitude, double longitude) {
- Geocoder geocoder = new Geocoder(context, Locale.getDefault());
- try {
- List<Address> addresses = geocoder.getFromLocation(latitude, longitude, );
- // Log.i("得到位置当前", "/" + addresses);
- //"经度:"+String.valueOf(address.get(0).getLongitude()*1E6)+"\n";
- //"纬度:"+String.valueOf(address.get(0).getLatitude()*1E6)+"\n";
- //"国家:"+address.get(0).getCountryName()+"\n";
- //"省:"+address.get(0).getAdminArea()+"\n";
- //"城市:"+address.get(0).getLocality()+"\n";
- // "名称:"+address.get(0).getAddressLine(1)+"\n";
- //"街道:"+address.get(0).getAddressLine(0);
- return addresses.get().getLocality();
- } catch (Exception e) {
- e.printStackTrace();
- return "未知";
- }
- }
3由地名获得经纬度
3.1利用谷歌自带api
- /**
- * 根据地名返回一个有经纬度location,如果查询不到经纬度 则默认经纬度是0
- * @param context
- * @param address
- * @return
- */
- public static Location getLocation(Context context, String address) {
- Geocoder geocoder = new Geocoder(context, Locale.getDefault());
- try {
- List<Address> addresses = geocoder.getFromLocationName(address,);
- ALog.i("得到位置name", "/" + addresses);
- Location location = new Location(address);
- location.setLatitude(addresses.get().getLatitude());
- location.setLongitude(addresses.get().getLongitude());
- return location;
- } catch (Exception e) {
- ALog.i(TAG, "未获得有效数据");
- e.printStackTrace();
- return new Location(address);
- }
- }
3.2利用网络(需要翻墙但是速度快,查找并不全面)
- public PositionInfo getPositionInfo(String position_name) throws IOException {
- InputStream is_position = new URL("http://maps.googleapis.com/maps/api/geocode/json?address=" + URLEncoder.encode(position_name, "UTF-8") + "&sensor=false").openStream();
- //连接是google提供的根据地名查询location的地址 例如:http://maps.googleapis.com/maps/api/geocode/json?address=%E4%B8%AD%E5%85%B3%E6%9D%91&sensor=false 返回的是json格式字符串
- String position = StreamTools.readStream(is_position);
- Gson gson = new Gson();
- return gson.fromJson(position, PositionInfo.class);
- }
Android GoogleMap 谷歌地图从零开始的更多相关文章
- Android 国内集成使用谷歌地图
extends:http://blog.csdn.net/qduningning/article/details/44778751 由于众做周知的原因在国内使用谷歌地图不太方便,在开发中如果直接使用会 ...
- Android集成Google地图详细步骤记录
先贴下Google官方的地图demo地址:https://github.com/googlemaps/android-samples 那么接下来第一步,申请Google的API key. 使用谷歌账号 ...
- android编程——百度地图初探
项目需要,花了一天时间研究了下百度地图的API,其实看起来可能会有点困难,但是将它的DEMO跑起来之后一切都迎刃而解的样子了.百度方面讲地图的接口封装的挺不错的,而且现在能够提供的地图的服务也有将近十 ...
- Windows Store Javascript项目使用高德地图、谷歌地图、百度地图API
原文 Windows Store Javascript项目使用高德地图.谷歌地图.百度地图API 在Win8 Store 项目中可以使用的地图主要有微软的Bing Map,目前高德地图sdk也支持Wi ...
- Android 打开高德地图、百度地图进行导航;打开第三方App去导航;
抽成工具类了,复制下来就能直接用了,直接看代码吧: 高德地图Url Api: http://lbs.amap.com/api/amap-mobile/guide/android/navigation ...
- 结合谷歌地图多边形(polygon)与Sql Server 2008的空间数据类型计算某个点是否在多边形内的注意事项
首先在利用 GEOGRAPHY::STPolyFromText(@GeoStr, 4326) 这样的函数把字符串转换为Geography类型时,字符串里经纬度的顺序是 “经度[空格]纬度”,即“lon ...
- .NET开发笔记(二十三) 谷歌地图下载
关于如何将地球经纬度坐标系统转换成程序中常用到的平面2D坐标系统,网上的文章很多,参考http://www.cnblogs.com/beniao/archive/2010/04/18/1714544. ...
- 谷歌地图地理解析和反解析geocode.geocoder详解
地址解析就是将地址(如:贵州省贵阳市)转换为地理坐标(如经度:106.71,纬度:26.57)的过程. 地理反解析和上面的过程相反是将地理坐标(如纬度:26.57,经度:106.71)转换为地址(中国 ...
- Maplace.js – 小巧实用的 jQuery 谷歌地图插件
Maplace.js是一个小的显示谷歌地图的 jQuery 插件,帮助你把谷歌地图嵌入到你的网站,快速在地图位置上创建标记和控制菜单.它需要 jQuery 和谷歌地图 API v3 支持,所以这两个都 ...
随机推荐
- Vue双向数据绑定实现原理
https://zendq1998.github.io/2018/04/12/vue%E5%8F%8C%E5%90%91%E6%95%B0%E6%8D%AE%E7%BB%91%E5%AE%9A%E5% ...
- ivew使用星星评分
这组件好像有问题,不知道是我们项目环境造成的还是什么,初始化半星不能正常显示,显示的全星. 1.template <div style="display:inline-block;ma ...
- eoLinker上线两周年+ AMS V4.0 发布:全新UI界面,带来领先的API开发管理解决方案!
2018年7月,eoLinker 发布了<eoLinker AMS 2018年年中用户调研问卷>,前后经历一周的时间,共收集到超过1000份有效调查问卷.超过300个有效改进意见. eoL ...
- 05-Linux系统编程-第02天(文件系统、目录操作、dup2)
1 课程回顾 02-文件存储 文件名不在inode里 而是保存在一个叫dentry的结构体里了 格式化就是指定一组规则 指定对文件的存储及读取的一般方法 linux下主要使用 ext2 ext3 ex ...
- 第2章 this 、 call 和 apply
第一部分 基础知识 第2章 this . call 和 apply 2.1 this JavaScript的 this 总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的, ...
- Vue.js大总结
最近回顾了一下Vue.js的基础知识,把认为重要的几个点简单的罗列了出来 vue渐进式的理解 vue可以开发很多插件,可以把很多插件组合到一起,渐进的增加vue的功能 update beforeUpd ...
- 爬虫系列(五) re的基本使用
1.简介 究竟什么是正则表达式 (Regular Expression) 呢?可以用下面的一句话简单概括: 正则表达式是一组特殊的 字符序列,由一些事先定义好的字符以及这些字符的组合形成,常常用于 匹 ...
- CodeForces - 340 C - Tourist Problem
先上题目: A - Tourist Problem Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & ...
- BA-WG-术语
ActiveX ActiveX 技术 使无论任何语言产生的软件在网络环境中能够实现互操作性的一组技术.ActiveX 建立在 Microsoft 的组件对象模型 (COM) 基础上.尽管 Active ...
- 洛谷——P1616 疯狂的采药
https://www.luogu.org/problem/show?pid=1616#sub 题目背景 此题为NOIP2005普及组第三题的疯狂版. 题目描述 LiYuxiang是个天资聪颖的孩子, ...