一、获取API Key

1、先获取SHA-1 fingerprint

数字证书是有两种,一种是debug,还有release。前者只能用于测试;后者才可以用于实际产品。

debug:在命令行中输入命令:keytool -list -v -keystore "C:\Users\your_user_name\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

release:替换签名文件路径;替换密码即可

SHA-1 fingerprint也可以在Eclipse中获取,如图:

2、登录网站获取API Key

网址:https://code.google.com/apis/console/ 用Gmail的账户登录,如果是第一次的话,需要创建项目,默认情况会创建一个叫做API Project的项目。

点击左边的Services,会在中间看到很多的APIs和Services,找到Google Maps Android API v2,然后把它设置成on,需要接受一些服务条款。

在左边的导航条中选择API Access。在出来的页面中选择Create New Android Key...就可以生成key了:

3、创建项目

AndroidManifest.xml中声明权限

<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"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<!-- The following two permissions are not required to use
Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

声明api key

<!-- Google Map Key -->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="前面申请的key" />
<meta-data
android:name="com.google.android.gms.version"
android:value="4030500" />

由于google maps v2需要opengl es v2的支持,所以必须在androidmanifest.xml里添加以下元素

<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>

导入google-play-services.jar

加载map要用到SupportMapFragment

SupportMapFragment fragment = SupportMapFragment.newInstance();
getSupportFragmentManager().beginTransaction().add(R.id.ll_map, fragment).commit();

4、添加标记物Marker

默认的Marker

private GoogleMap mMap;
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
mMap.addMarker(new MarkerOptions()
.position(new LatLng(0, 0))
.title("Hello world"));

自定义Marker

private static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298);
private Marker melbourne = mMap.addMarker(new MarkerOptions()
.position(MELBOURNE)
.title("Melbourne")
.snippet("Population: 4,137,400")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));

自定义Marker时使用了BitmapDescriptorFactory创建一个自定义的Marker图标,在使用BitmapDescriptorFactory之前先看看先看看它的文档,使用这个类的任何方法之前,你必须做下列操作之一,以确保这个类被初始化:1:从MapFragment或者MapView中添加一个GoogleMap,你可以通过调用GoogleMap.getMap()方法,判断返回是否为空。2:调用  MapsInitializer.initialize(Context)方法,只要不抛出com.google.android.gms.common.GooglePlayServicesNotAvailableException GooglePlayServicesNotAvailableException这个异常就可以正常起始化。

还有Marker的点击事件,GoogleMap.setOnMarkerClickListener(); Marker的拖动事件,GoogleMap.setOnMarkerDragListener();(Marker默认是不能拖动的,创建Marker时设置melbourne.setDraggable(true)为可拖动)

点击 Marker时会默认弹出信息窗口Info Windows,你可以使用InfoWindowAdapter接口,调用GoogleMap.setInfoWindowAdapter()去自定义Info Windows,InfoWindowAdapter要实现两个方法 getInfoWindow(Marker)和getInfoContents(Marker)。api会先调用getInfoWindow(Marker)方法,如果返回null,再继续调用getInfoContents(Marker)方法,如果继续返回null,api将调用默认的info windows。info windows跟marker一样具有点击事件GoogleMap.setOnInfoWindowClickListener()。

最新文章

  1. tfs连不上团队资源管理器问题
  2. [SharePoint 2010] 自定义字段类型开发(二)
  3. 由一段JS代码引发的思考
  4. VB.NET中的除法运算符 与 C#中的除法运算符
  5. [原创]cocos2d-x研习录-第二阶 概念类之节点类(CCNode)
  6. 给VMware下的Linux扩展磁盘空间(以CentOS6.3为例)转
  7. android 中怎么保存当前按钮的状态?就是退出后重新进入还是上一次离开的状态
  8. 第十一篇 Material Status设置与测试,制药业案例一则
  9. 干掉拖延症!写给新人的GTD方法
  10. python实战--Http代理服务器
  11. sort 使用 tab键 作为 分隔符_人生如梦_百度空间
  12. sql小技巧 group by datetime类型字段,只取其中的日期部分
  13. crawler_URL编码原理详解
  14. 一个挺好用的任务提示小软件 Rainlendar2
  15. 如何在windows下载和安装Apache
  16. MinerConfig.java 爬取配置类
  17. Day11 空时编码理论之正交空时分组码和垂直分层空时编码
  18. github上传超过100mb文件怎么办
  19. B. School Marks(典型贪心)
  20. java NIO 直接与非直接缓冲区

热门文章

  1. WinDbg常用命令系列---单步执行p*
  2. 转载:线性回归建模–变量选择和正则化(1):R包glmnet
  3. Alpha冲刺(4/6)
  4. ICEM-带柱底座
  5. Ecms7.5版CK编辑器保留word格式如何修改
  6. nacos启动与sql8.0的问题解决方法
  7. java中&amp;&amp; 的运算优先级高于||
  8. 蚂蚁Pincap头条
  9. 2015-2016-2《Java程序设计》团队博客5
  10. 游标_oracle