Google Map API v2 步步为营(一) ----- 初见地图
官方文档: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 步步为营(一) ----- 初见地图的更多相关文章
- Google Map API v2 (三)----- 地图上添加标记(Marker),标记info窗口,即指定经纬度获取地址字符串
接上篇 http://www.cnblogs.com/inkheart0124/p/3536322.html 1,在地图上打个标记 private MarkerOptions mMarkOption; ...
- Google Map API v2 步步为营 (二)----- Location
接上篇. 改造一下MapsActivity: public class MapsActivity extends Activity implements LocationListener, InfoW ...
- Android中Google地图路径导航,使用mapfragment地图上画出线路(google map api v2)详解
在这篇里我们只聊怎么在android中google map api v2地图上画出路径导航,用mapfragment而不是mapview,至于怎么去申请key,manifest.xml中加入的权限,系 ...
- google map api v2的使用详细过程,图文并茂(原创)
上一篇中说到怎么获取key,下面来介绍怎么使用key来显示google地图 步骤1:eclipse上打开android SDK Manager,安装google play services. 步骤2: ...
- Google Map API v2 (四)----- 导航路径
仍然是建议个异步小任务 private GetPathTask mGetPathTask = null; private void getGuidePath(LatLng origin){ if(mG ...
- Google Map API V2密钥申请
之前用的都是v1,用的是MapView,好吧,仅仅能认命了.废话不再多说,開始android 的Google Maps Android API v2吧 之前參考了http://www.cnblogs. ...
- Google Map API v2 番外篇 关于gps位置偏差及修正方法探讨
我的手机是M35C,在我自己的map activity中,通过gps获取到的经纬度比实际地址总是有500米左右的偏差. 在网上搜索了很多,都说这个是测绘局为了保密故意弄成这样的.gps全球定位系统获得 ...
- 谷歌地图实现车辆轨迹移动播放(google map api)
开发技术:jquery,js baidu map api,json,ajax QQ1310651206 谷歌地图(google map api)实现车辆轨迹移动播放(google map api)
- Google Map API抓取地图坐标信息小程序
因为实验室需要全国城市乡镇的地理坐标,有Execl的地名信息,需要一一查找地方的经纬度.Google Map地图实验室提供自带的查找经纬度的方法,不过需要一个点一个点的手输入,过于繁琐,所以自己利用G ...
随机推荐
- mysql 连接url中useUnicode=true&characterEncoding=UTF-8 的作用
添加的作用是:指定字符的编码.解码格式. 例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码.这时候如果添加了useUnicode=true&cha ...
- Delphi XML-RPC 中文乱码解决方法
http://download.csdn.net/user/csm2432/uploads/2
- 没做过编译器就是被人欺——从一道变态的i++题猜编译器的行为(表达式从左往右扫描,同一变量相互影响)
首先不要被人蒙了,如果是这样,根本编译不过: int i=1; int b=i+++++i; printf("%d %d\n", b ,i); Mingw报错:error: lva ...
- 【HDOJ】1198 Farm Irrigation
其实就是并查集,写麻烦了,同样的代码第一次提交wa了,第二次就过了. #include <stdio.h> #include <string.h> #define MAXNUM ...
- ETL构建数据仓库五步法
原文:http://huangy82.blog.163.com/blog/static/49069827200923034638409/ ETL构建企业级数据仓库五步法 在数据仓库构建中,ETL贯穿于 ...
- Oracle和MSSQL查询有多少张表
Oracle: SELECT count(*) FROM user_tables MSSQL: ) FROM sysobjects WHERE xtype='U' 这种方法可能会把dbo.dtprop ...
- [原]RobotFrameWork(十一)AutoItLibrary测试库在win7(64bit)下安装及简单使用
最近安装AutoItLibrary,发现在win7 x64下无法安装成功,后来经过定位,发现是3rdPartyTools\AutoIt目录下面AutoItX3.dll的问题.因为AutoItX3.dl ...
- numpy note_1
tile(A,reps) 通过重复 reps次数的A 创建一个数组 examples: >>> a = np.array([0, 1, 2]) >>> np.til ...
- Bzoj 1756: Vijos1083 小白逛公园 线段树
1756: Vijos1083 小白逛公园 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1021 Solved: 326[Submit][Statu ...
- RDD.scala(源码)
---- map. --- flatMap.fliter.distinct.repartition.coalesce.sample.randomSplit.randomSampleWithRange. ...