准备:
Google Maps Android API v2开发谷歌地图,可以使用普通版本的api ,不需要Google APIs。但需要安装google play 服务、google play 商店。
安装可以通过豌豆荚,也可以通过cmd命令:adb install
使用cmd命令时需要打开虚拟机才可以安装。
开发环境:
android4.0 ,jdk1.6
开发流程:
一、获取Api key
通过eclipse,Window->Preferences->Android->Build->Default debug keystore查看debug.keystore的位置。
cmd命令进入目录,运行keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android,得到证书指纹。
用Gmai用户,进入网址https://code.google.com/apis/console/
在Services下,找到Google Maps Android API v2,并把它设置成on。
在API Access 下,点击Create new Android key..
输入前面得到的证书指纹,(别忘了后面的分号加包名,也就是你项目的包名)
最后可以看到 API key
编写应用程序:
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
fragment是android 3.0 才引入的概念,使用更低版本时,需要使用Support Library。
布局文件中,把MapFragment改为SupportMapFragment。
MainActivity继承自FragmentActivity而不是Activity。
2、java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
这个问题的原因是 gen目录下没有 com.google.android.gms.R 这个类,下面是导入这个包的方法:
eclipse下点击 File->import->android-> Existing Android Code Into Workspace
然后选择browse,把google-play-services_lib导入,位置在android SDK 安装目录下的 ..\extras\google\google_play_services\libproject\google-play-services_lib。
下面的Copy project into workspace 也要勾上。
完成后回到项目,右击->properties->android->add->把刚才的google-play-services_lib添加进去。
最后gen目录下就有个com.google.android.gms这个包
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