准备:
Google Maps Android API v2开发谷歌地图,可以使用普通版本的api ,不需要Google APIs。但需要安装google play 服务、google play 商店。
安装可以通过豌豆荚,也可以通过cmd命令:adb install
![](http://images0.cnblogs.com/blog/337382/201303/18140057-0af67485d14244158abfa71f46751232.png)
使用cmd命令时需要打开虚拟机才可以安装。
开发环境:
android4.0 ,jdk1.6
开发流程:
一、获取Api key
通过eclipse,Window->Preferences->Android->Build->Default debug keystore查看debug.keystore的位置。
![](http://images0.cnblogs.com/blog/337382/201303/18140420-82e4711d923846c0ae456153cd55468a.png)
cmd命令进入目录,运行keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android,得到证书指纹。
![](http://images0.cnblogs.com/blog/337382/201303/18140506-df01ad68ab5d449ea1056766a73919fc.png)
用Gmai用户,进入网址https://code.google.com/apis/console/
在Services下,找到Google Maps Android API v2,并把它设置成on。
![](http://images0.cnblogs.com/blog/337382/201303/18140920-a0189ee8d8e04567bc54982374d6da3f.png)
![](http://images0.cnblogs.com/blog/337382/201303/18140931-04d3d031ceb34ebdb15f1be62ddc0449.png)
在API Access 下,点击Create new Android key..
![](http://images0.cnblogs.com/blog/337382/201303/18141007-c47b3da3d8094ef98d0ea41297752c07.png)
输入前面得到的证书指纹,(别忘了后面的分号加包名,也就是你项目的包名)
![](http://images0.cnblogs.com/blog/337382/201303/18141356-19e45f9e416a4e0ab1ceb8a26351ed90.jpg)
最后可以看到 API key
![](http://images0.cnblogs.com/blog/337382/201303/18141457-af976769878743ffb78319417dcd2522.jpg)
编写应用程序:
main.xml
<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.MapFragment"/>
AndroidManifest.xml
1、在
<application>
里面节点加入api key ,your_api_key是上面申请的密匙<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your_api_key"/>
2、加入权限
<permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>
<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"/>
3、加入<users-feature>元素
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
MainActivity.java
public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
常见问题:
1、java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader
![](http://images0.cnblogs.com/blog/337382/201303/18154949-8e391bba2a6441c598e85bca6e04a142.jpg)
fragment是android 3.0 才引入的概念,使用更低版本时,需要使用Support Library。
布局文件中,把MapFragment改为SupportMapFragment。
MainActivity继承自FragmentActivity而不是Activity。
2、java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
![](http://images0.cnblogs.com/blog/337382/201303/18160219-aeb95bf143f54c2b9d7ead2b1a58761e.jpg)
![](http://images0.cnblogs.com/blog/337382/201303/18160814-0a060ddaa5fc48a988c890f5ebbe89c1.jpg)
这个问题的原因是 gen目录下没有 com.google.android.gms.R 这个类,下面是导入这个包的方法:
eclipse下点击 File->import->android-> Existing Android Code Into Workspace
![](http://images0.cnblogs.com/blog/337382/201303/18161333-351b81556dfe425d8d395d7f1220bddb.jpg)
然后选择browse,把google-play-services_lib导入,位置在android SDK 安装目录下的 ..\extras\google\google_play_services\libproject\google-play-services_lib。
下面的Copy project into workspace 也要勾上。
![](http://images0.cnblogs.com/blog/337382/201303/18161910-26555b1c8ea0479a9ef7be9d87a56a92.jpg)
完成后回到项目,右击->properties->android->add->把刚才的google-play-services_lib添加进去。
![](http://images0.cnblogs.com/blog/337382/201303/18162454-7b46487879624f05a416bd7396efa43c.jpg)
最后gen目录下就有个com.google.android.gms这个包
![](http://images0.cnblogs.com/blog/337382/201303/18162759-9a09bcfcdedc48bea69dcd6bf639bffc.jpg)
3、如果出现 + — 号,屏幕一片白色,可能是api key 错误,或者是包名有错,可以到 https://code.google.com/apis/console/ 重新申请密匙。
参考文章:
http://www.cnblogs.com/mengdd/archive/2013/01/01/2841390.html
https://developers.google.com/maps/documentation/android/start