Android Google Map V2想说爱你不容易
也许你可能不知道,智能手机上面装载数量第一的软件是Google Map,人们的生活已经离不开Google了。但是要吐槽的是新版的Google Map也进行了扁平化设计,这一点我个人比较提倡,但是用户体验不如以前,果断装上百度地图。值得注意的是Google Map在大陆的数据库用的是高德地图的数据库,这里面有什么原因,自己想去吧!
我用过百度,Google Map和高德地图,感觉还是Google Map好用准确一些,虽然它在天朝很受压迫,但是如果要是选择开发,我还是选择Google Map。好了,话不多讲,今天就说一说Google Map V2在Android上面环境搭建过程。现在好多资料都是针对V1版本进行讲解,但是V2版本和V1版本真是大相径庭。
开始讲解之前,先说一下准备材料。第一,完整的SDK一只。第二,能够上网。第三,两个小软件(apk形式)vending.apk和gms.apk下面是这连个小软件的截图。
开始说搭建环境,第一步:申请gmail邮箱账号,如果有请跳过此步骤。方法很简单,百度上面google一下gmail,点击进入,场面是下面这个样子的。
起个什么样子的用户名是你自己的事情,第一步到此结束。
第二步:拿到你机子的SHA1指纹,这里不说在cmd中敲命令获取,教你一个简单方式。在eclipse中,window>>preferences>>android>>build,里面就有了。下面还是一张截图。
第三步:开始申请key值,网址是https://code.google.com/apis/console/,必须用你刚才那个gmail账号登录,然后会是这个样子。
箭头中的1指代第一步操作,在这里面有好多服务,关键是找到android那一个,下面是截图。
记住,打上勾勾,然后选中箭头指示的2,会出现下面的情形。
选中划框框的那一项,然后会有一个弹框,输入SHA1;包名的形式,上面有提示,很简单的,然后点击创建就OK了。我创建成功了,请看下面截图。
拿到key之后基本就解决了一半问题。
第四步:顺便插一句,刚才没有说创建工程的问题,其实创建工程和普通工程一样,只是用到包名而已。好了,接着往下面说。刚才为什么说需要一直完成的SDK呢,因为下面需要用到。SDK中提供了需要的JAR,这一步我们要导入。导入方式和以往有些不同,是这样的File-Import,选中Android节点下的Existing Android Code Into Workspace,下面有截图。
找到一个神秘的东西,路径是<android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib,然后确定进来(根据自己情况是否选择copy到工作空间),导入进来,下面是截图。
然后引用它,方法是右键你的工程然后选择最后一项然后就是下面的截图。
点击add按钮进行选择,选择时候效果是这样。OK,大体就是这样。
第五步:创建模拟器,安装上面的两个软件。不要和V1版本创建的方式一样,原来你怎么创建,现在还怎么创建就可以,不要选择APIs那个东西。创建完成后启动模拟器,然后安装开始说的那连个软件,用CMD命令安装即可。此处就不给图了,默认你可以完成。
第六步:配置文件,完成地图。首先配置manifest文件,这样配置:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.map" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="8" 9 android:targetSdkVersion="17" /> 10 11 <permission 12 android:name="com.map.permission.MAPS_RECEIVE" 13 android:protectionLevel="signature" /> 14 15 <uses-permission android:name="com.map.permission.MAPS_RECEIVE" /> 16 <uses-permission android:name="android.permission.INTERNET" /> 17 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 18 <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 19 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 20 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 21 22 <uses-feature 23 android:glEsVersion="0x00020000" 24 android:required="true" /> 25 26 <application 27 android:allowBackup="true" 28 android:icon="@drawable/ic_launcher" 29 android:label="@string/app_name" 30 android:theme="@style/AppTheme" > 31 <meta-data 32 android:name="com.google.android.maps.v2.API_KEY" 33 android:value="AIzaSyAhnUn5q4BG56btFWsFGtVPY9snA6YXdHk" /> 34 35 <activity 36 android:name="com.map.MainActivity" 37 android:label="@string/app_name" > 38 <intent-filter> 39 <action android:name="android.intent.action.MAIN" /> 40 41 <category android:name="android.intent.category.LAUNCHER" /> 42 </intent-filter> 43 </activity> 44 </application> 45 46 </manifest>
当然,key值要换一下哦。然后是mainactivity.xml。这里需要注意的是API的不同,配置不同。引用网上其他人的说法,下面是代码。
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context=".MainActivity" > 10 11 <fragment 12 android:id="@+id/map" 13 android:layout_width="match_parent" 14 android:layout_height="match_parent" 15 class="com.google.android.gms.maps.MapFragment" /> 16 17 </RelativeLayout>
注意:如果你的Android SDK为3.1(API 12)之前版本,如Android 2.3.3,则需要将MapFragment修改为SupportMapFragment,因为MapFragment只在API 12及之后的版本才有,所以对于之前的版本需要使用Support Library来进行辅助。
MainActivity.java中,如果你的Android SDK为3.1(API 12)之前版本,如Android 2.3.3,则需要进行以下编码,否则请跳过该步骤。
package xxx.xxx.mylbs;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
由于API 12之前的SDK必须借助FragmentActivity对Fragment进行管理,因此,使用了Fragment标签的活动须继承自FragmentActivity,该Activity由android.support.v4.app包定义。
现在基本就搞定了,启动模拟器,然后惊喜就出现了,看截图。
当然了,在做的时候会遇到各种麻烦,需要你自己去解决,我的方法也是通过自己不断找资料和不断发现才总结出来的,希望对你有帮助。
感谢支持!