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包定义。

现在基本就搞定了,启动模拟器,然后惊喜就出现了,看截图。

 

当然了,在做的时候会遇到各种麻烦,需要你自己去解决,我的方法也是通过自己不断找资料和不断发现才总结出来的,希望对你有帮助。

感谢支持!

 

posted @ 2013-11-07 09:57  linux86  阅读(1503)  评论(4编辑  收藏  举报