官方文档: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. flume 报File Channel transaction capacity cannot be greater than the capacity of the channel capacity错误

    今天在部署flume集群时,在启动collector服务器没报错,启动agent服务器报错: File Channel transaction capacity cannot be greater t ...

  2. 【POJ 1830】 开关问题 (高斯消元)

    开关问题   Description 有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为 ...

  3. [转贴]C++开源库

    C++在“商业应用”方面,曾经是天下第一的开发语言,但这一 桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用.当Java横行天下之后,MS又突然发力,搞出C# ...

  4. Android自定义View带有删除按钮的EditText

    转载请注明出处http://blog.csdn.net/xiaanming/article/details/11066685 今天给大家带来一个很实用的小控件ClearEditText,就是在Andr ...

  5. Hadoop开发环境搭建

    hadoop是一个分布式系统基础架构,由Apache基金会所开发. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.   Hadoop实现了一个分布式文件系统 ...

  6. 【CF】223 Div.1 C Sereja and Brackets

    水线段树. /* 380C */ #include <iostream> #include <string> #include <map> #include < ...

  7. 设置SharePoint2010列表的项目级权限

    转:http://www.cfanz.cn/?c=article&a=read&id=24096 在SharePoint2010中我们经常会用到这样的权限设置,在一个列表中可以存储多个 ...

  8. Android Http Server

    Android Http Server 1 引言          Android如何构建Http服务器呢?本文的小例子,约莫着,还是能做个参考的^^.恩,例子实现的是PC浏览手机文件,支持了下载和删 ...

  9. [C#]网络编程系列专题二:HTTP协议详解

    转自:http://www.cnblogs.com/zhili/archive/2012/08/18/2634475.html 我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网 ...

  10. ARM学习笔记11——GNU ARM汇编程序设计

    GNU ARM汇编程序设计中,每行的语法格式如下: [<label>:] [<instruction | directive | pseudo-instruction>] @c ...