官方文档:https://developers.google.com/maps/documentation/android/start?hl=zh-CN

先谷歌后百度。使用google的api基本上按照官网来就好了,开发过程中遇到各种各样的问题,其实仔细看官方文 都能找到解决方法的。这篇文主要是让自己回顾总结一下。

Google Map API v2 相对v1变化了不少,千万别拿着v1的攻略做v2。

step1  准备工作:

1,需要安装两个东西,Google Play services SDK 和 Google APIs。

打开Android SDK Manager,拖到最底下找到Extras文件夹,展开,找到Google Play services,安装。

Google Play services 将安装到android SDK path下,我的目录是~/develop/android-sdk-linux/extras/google/google_play_services/

我用的是API 15(4.0.3),到对应的目录下展开,安装Google APIs。

2,导入Google Play services

File > Import,  选择Android > Existing Android Code into Workspace,找到

~/develop/android-sdk-linux/extras/google/google_play_services/libproject/google-play-services_lib/。

导入之后在eclipse里就能看到google-play-services_lib工程,如果eclipse里设置了build automatically,就会自动编译,要确保gen目录下有生成com.google.android.gms这个包,否则后面的步骤会报错。

3,按正常步骤建立自己的android project,把google-play-services_lib加入到Dependencies的库中。

在左边的Package Expolorer视窗中找到自己的project,鼠标右键,选择Properties,左边导航栏选Android,右边子窗口里找到Library,点Add,打开project selection窗口,选择google-play-services_lib,点Ok。

加入后

点OK。

回到工作区,包目录下可以看到多了两个dependence的包

4,调试环境

手机上需要安装Google服务包(com.google.android.gms.apk)和Google Play Store(com.android.vending.apk)。

我没装google服务的framework,play store其实是用不了的,但是并不影响Google Map的使用。

如果使用模拟器,创建AVD的时候 target选择对应API level的Google APIs就行了。

准备工作结束。

step 2 申请KEY

使用google的东西都必须申请一个KEY,这个KEY是和 APK的包名 及 打apk包时所用的证书 绑定的。

1,先安装keytool

eclipse->Help->Install New Software,点Add,Name填写Keytool,Loction填http://www.keytool.sourceforge.net/update ,安装完成重启eclipse,菜单栏上多了Keytool菜单。

2,找到证书的SHA1

调试阶段通过eclipse的run和debug打包的apk,都是使用默认的debug证书,这个证书的位置在home目录的.android目录下。

eclipse->Keytool->Open keystore,文件路径输入/home/用户名/.android/debug.keystore,密码是debug证书的默认密码android

打开后窗口底部出现keytool视窗,列出刚刚选择的keystore,展开,双击打开androiddebugkey,找到SHA1 Fingerprint 复制下来。

也可以通过命令行查看key,keytool的命令行操作参考http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

3, 登陆Google APIs Console,创建KEY

用gmail账号登陆https://code.google.com/apis/console/?noredirect,新建一个project,左边导航视窗中选择Services,第一次加载可能会比较慢。

加载完后,右边窗口会出现google提供的所有服务,找到Google Maps Android API v2,把后面的trigger设置成ON,然后出现的各种协议选择accept。

导航视窗中选择API Access。点击按钮Create Android Key,弹出窗口中填写 “SHA1;包名”,create成功,返回API Access窗口就能看到Key for Android apps,把API key栏的一串字符复制下来。

step 3 可以开始codding了

1,修改manifest

回到eclipse,打开AndroidManifest.xml,在<manifest>根节点中设置地图访问许可

<!-- google map needed -->
<permission
android:name="com.xxx.xxx.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.xxx.xxx.permission.MAPS_RECEIVE"/>
<!-- google map needed -->

com.xxx.xxx是包名,注意这两句要加在<application></application>外面

其他需要的许可

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!-- 精确位置服务 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <!-- 位置服务 -->
<uses-permission android:name="android.permission.INTERNET"/> <!-- 网络服务 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!-- 查询网络状态 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- 写sd卡 google地图会往sd卡上写缓存数据-->
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <!-- 允许访问google的web服务 -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>

申明要使用OpenGL ES,这一项是为了让不支持OpenGL的机器访问play store的时候略过这个apk。不写这一项也不影响调试。

在<application></application>节点中增加两个元数据:

<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" /> <meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/GOOGLE_MAP_API_KEY"/>

res/values/config.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>
<string translatable="false" name="GOOGLE_MAP_API_KEY">上一步中复制出来的API KEY</string> </resources>

GOOGLE_MAP_API_KEY 的值就是step 2.3中申请的key。

2,MapsActivity.java

layout/map.xml

 <?xml version="1.0" encoding="utf-8"?>

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<fragment
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment"/> <RelativeLayout android:id="@+id/debug"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
> <TextView android:id="@+id/debug_loc_marked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#f00"
android:text="debug_loc_marked"
android:layout_marginTop="0dip" /> <TextView android:id="@+id/debug_loc_my"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#f00"
android:text="debug_loc_my"
android:layout_below="@id/debug_loc_marked" />
</RelativeLayout>
</FrameLayout>

重点在7~11行,v2的地图是用Fragment来显示的

13~31行是两个用于调试的textview,显示标记所在的经纬度,及当前位置经纬度。

MapsActivity.java

先给一个简化版

public class MapsActivity extends Activity{

  public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
}
}

OK,run一下

本篇结束。上图中mark和地址获取需要额外的代码,下一篇进阶篇中再继续整理。

Google Map API v2 步步为营(一) ----- 初见地图的更多相关文章

  1. Google Map API v2 (三)----- 地图上添加标记(Marker),标记info窗口,即指定经纬度获取地址字符串

    接上篇 http://www.cnblogs.com/inkheart0124/p/3536322.html 1,在地图上打个标记 private MarkerOptions mMarkOption; ...

  2. Google Map API v2 步步为营 (二)----- Location

    接上篇. 改造一下MapsActivity: public class MapsActivity extends Activity implements LocationListener, InfoW ...

  3. Android中Google地图路径导航,使用mapfragment地图上画出线路(google map api v2)详解

    在这篇里我们只聊怎么在android中google map api v2地图上画出路径导航,用mapfragment而不是mapview,至于怎么去申请key,manifest.xml中加入的权限,系 ...

  4. google map api v2的使用详细过程,图文并茂(原创)

    上一篇中说到怎么获取key,下面来介绍怎么使用key来显示google地图 步骤1:eclipse上打开android SDK Manager,安装google play services. 步骤2: ...

  5. Google Map API v2 (四)----- 导航路径

    仍然是建议个异步小任务 private GetPathTask mGetPathTask = null; private void getGuidePath(LatLng origin){ if(mG ...

  6. Google Map API V2密钥申请

    之前用的都是v1,用的是MapView,好吧,仅仅能认命了.废话不再多说,開始android 的Google Maps Android API v2吧 之前參考了http://www.cnblogs. ...

  7. Google Map API v2 番外篇 关于gps位置偏差及修正方法探讨

    我的手机是M35C,在我自己的map activity中,通过gps获取到的经纬度比实际地址总是有500米左右的偏差. 在网上搜索了很多,都说这个是测绘局为了保密故意弄成这样的.gps全球定位系统获得 ...

  8. 谷歌地图实现车辆轨迹移动播放(google map api)

    开发技术:jquery,js baidu map api,json,ajax QQ1310651206 谷歌地图(google map api)实现车辆轨迹移动播放(google map api)

  9. Google Map API抓取地图坐标信息小程序

    因为实验室需要全国城市乡镇的地理坐标,有Execl的地名信息,需要一一查找地方的经纬度.Google Map地图实验室提供自带的查找经纬度的方法,不过需要一个点一个点的手输入,过于繁琐,所以自己利用G ...

随机推荐

  1. Wordpress 网站搭建及性能监控方法详解!

    前言 说到 Wordpress,大家往往想到的是博客,其实,如今的 WordPress 已经成为全球使用量最多的开源 CMS 系统.并且,如果你有一定的技术基础稍加改动,就可以搭建出新闻网站.企业网站 ...

  2. Jsoup 解析 HTML

    Jsoup 文档 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法 对于要取得元素或属性中的HTML内 ...

  3. JVM Monitoring: JMX or SNMP?

    JVM Monitoring: JMX or SNMP? By daniel on Feb 23, 2007 Since JavaTM SE 5.0, the JRE provides a means ...

  4. 30个最常用css选择器解析

    转自:http://www.cnblogs.com/yiyuanke/archive/2011/10/22/CSS.html 你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远 ...

  5. (转载)mysql decimal、numeric数据类型

    (转载)http://www.cnblogs.com/qiantuwuliang/archive/2010/11/03/1867802.html 可能做程序的人都知道,float类型是可以存浮点数(即 ...

  6. bzoj 1069 [SCOI2007]最大土地面积(旋转卡壳)

    1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2277  Solved: 853[Submit][Stat ...

  7. 打开U盘里是U盘的快捷方式?(2013.12.05)

    昨天去打印室打印,结果U盘就中招了 症状:   我的U盘:                                                            打开变成了里面:   ...

  8. 研磨设计模式解析及python代码实现——(二)外观模式(Facade)

    一.外观模式定义 为子系统中的一组接口提供一个一致的界面,使得此子系统更加容易使用. 二.书中python代码实现 class AModuleApi: def testA(self): pass cl ...

  9. linux 下信号处理命令trap && linux下各种信号的意义

    1.用途说明 trap是一个shell内建命令,它用来在脚本中指定信号如何处理.比如,按Ctrl+C会使脚本终止执行,实际上系统发送了SIGINT信号给脚本进程,SIGINT信号的默认处理方式就是退出 ...

  10. final效率分析

    1. 被final修饰的类 public final class FinalClass { public void getJava() { String str1 = "Java " ...