说明

由于国内使用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 谷歌地图从零开始的更多相关文章

  1. Android 国内集成使用谷歌地图

    extends:http://blog.csdn.net/qduningning/article/details/44778751 由于众做周知的原因在国内使用谷歌地图不太方便,在开发中如果直接使用会 ...

  2. Android集成Google地图详细步骤记录

    先贴下Google官方的地图demo地址:https://github.com/googlemaps/android-samples 那么接下来第一步,申请Google的API key. 使用谷歌账号 ...

  3. android编程——百度地图初探

    项目需要,花了一天时间研究了下百度地图的API,其实看起来可能会有点困难,但是将它的DEMO跑起来之后一切都迎刃而解的样子了.百度方面讲地图的接口封装的挺不错的,而且现在能够提供的地图的服务也有将近十 ...

  4. Windows Store Javascript项目使用高德地图、谷歌地图、百度地图API

    原文 Windows Store Javascript项目使用高德地图.谷歌地图.百度地图API 在Win8 Store 项目中可以使用的地图主要有微软的Bing Map,目前高德地图sdk也支持Wi ...

  5. Android 打开高德地图、百度地图进行导航;打开第三方App去导航;

    抽成工具类了,复制下来就能直接用了,直接看代码吧: 高德地图Url Api: http://lbs.amap.com/api/amap-mobile/guide/android/navigation ...

  6. 结合谷歌地图多边形(polygon)与Sql Server 2008的空间数据类型计算某个点是否在多边形内的注意事项

    首先在利用 GEOGRAPHY::STPolyFromText(@GeoStr, 4326) 这样的函数把字符串转换为Geography类型时,字符串里经纬度的顺序是 “经度[空格]纬度”,即“lon ...

  7. .NET开发笔记(二十三) 谷歌地图下载

    关于如何将地球经纬度坐标系统转换成程序中常用到的平面2D坐标系统,网上的文章很多,参考http://www.cnblogs.com/beniao/archive/2010/04/18/1714544. ...

  8. 谷歌地图地理解析和反解析geocode.geocoder详解

    地址解析就是将地址(如:贵州省贵阳市)转换为地理坐标(如经度:106.71,纬度:26.57)的过程. 地理反解析和上面的过程相反是将地理坐标(如纬度:26.57,经度:106.71)转换为地址(中国 ...

  9. Maplace.js – 小巧实用的 jQuery 谷歌地图插件

    Maplace.js是一个小的显示谷歌地图的 jQuery 插件,帮助你把谷歌地图嵌入到你的网站,快速在地图位置上创建标记和控制菜单.它需要 jQuery 和谷歌地图 API v3 支持,所以这两个都 ...

随机推荐

  1. Linux 帮助与语言设置以及(\)

    1.命令太长可以用反斜杠(\)来转义回车键,使用命令连续到下一行.注意:反斜杠后就立刻接着特殊字符才能转义. 2.修改语系为英文 LANG=en_US.utf8 export LC ALL=en_US ...

  2. 数据库操作(一)DML

    1.数据库 数据库可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增.查询.更新.删除等操作. 所谓“数据库”是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与 ...

  3. Lua操作系统库、流、文件库

    Lua操作系统库.流.文件库 1.Lua中所有的操作系统库函数 (1)os.clock() --功能:返回执行该程序cpu花费的时钟秒数 (2)os.time(...) --按参数的内容返回一个时间值 ...

  4. centos7安装mwget下载资源,提升下载速度

    1.安装mwget wget http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.tar.bz2 ta ...

  5. 51nod1212 无向图最小生成树

    N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树. Input 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量.(2 <= N <= 1000, 1 < ...

  6. Linux下SuperLU安装

    SuperLU安装 1.在家目录下建立文件夹superlu,进入该目录,获取安装程序并解压缩 mkdir superlu cd superlu wget http://crd-legacy.lbl.g ...

  7. python实现RGB转化为灰度图像

    问题: 我正尝试使用matplotlib读取RGB图像并将其转换为灰度.在matlab中,我使用这个: 1 img = rgb2gray(imread('image.png')); 在matplotl ...

  8. python下的线程 进程,以及如何实现并发服务器

    在一个CPU(一核)的电脑上, 程序的运行是并发运行的,调度的算法叫时间片轮转法,也叫轮询法 在多CPU(多核)的电脑上,一个CPU跑一个程序,刚程序运行数量小于核心数时,程序是并行的 并发:看上去一 ...

  9. netty helloWord (一)

    什么是nettty netty是基于javaNio模型的网络编程框架.很多框架底层也是用netty实现的 比如dubbo 与NIO的区别 1.简化了API的使用.基于事件驱动.只需要在对应的事件写相应 ...

  10. 【ACM】nyoj_2_括号配对问题_201308091548

    括号配对问题时间限制:3000 ms  |  内存限制:65535 KB 难度:3描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100),表示 ...