`
mmdev
  • 浏览: 13245551 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Android开发如何利用Google map

 
阅读更多

自google 06年进入中国,在地图、移动领域的发展速度基本上都是每年几倍的增长。在最新的Android平台开发相关应用程序,如果能深入了解google map 将会对我们Android开发提供很大的帮助.以下是我总结的在Android开发中对google map的理解。

1.首先先要获取你的debug keystore位置:

打开Eclipse--->Windows---> preferences--->Android--->Build
查看默认的debug keystore位置,我的是C:/Documents and Settings/sdhbk/.android/debug.keystore

2.
D:/android-sdk-windows-1.5_r1/tools>keytool -list -alias androiddebugkey -keysto
re "C:/Documents and Settings/sdhbk/.android/debug.keystore" -storepass android
-keypass android
androiddebugkey, 2009-7-25, PrivateKeyEntry,
认证指纹 (MD5): DA:D5:6E:C2:80:D1:0F:0D:F8:2A:58:6A:74:7C:CE:2D

3.
打开http://code.google.com/intl/zh-CN/android/maps-api-signup.html

填入你的认证指纹(MD5)即可获得apiKey了,结果显示如下:
感谢您注册 Android 地图 API 密钥!

您的密钥是:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

4. 使用得到的apiKey:

在layout中加入MapView
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g" />

或者

<view android:id="@+id/mv"
class="com.google.android.maps.MapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:apiKey="0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"
/>

5.Android在sdk1.5的预装的add-on中提供了一个Map扩展库com.google.android.maps,利用它你就可以给你的android应用程序增加上强大的地图功能了。这个库的位置在Your-SDK_DIR/add-ons/google_apis-3/libs.
一定要在manifest.xml中设置全相应的权限,比如:

  • <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  • <uses-permission android:name="android.permission.INTERNET" />

要在manifest.xml中加上要用的maps库:

  • <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  • package="com.example.package.name">
  • ...
  • <application android:name="MyApplication" >
  • <uses-library android:name="com.google.android.maps" />
  • ...
  • </application>
  • ...
  • </manifest>


需要说明的是这个库不是标准的android sdk的内容,你也可以自己从这里这里下载并放到你的sdk里面。

Maps库分析


Maps库提供了十几个类,具体可以参考这里http://code.google.com/intl/ja/android/add-ons/google-apis/reference/index.html,包括Mapview,MapController,MapActivity等。



Mapview是用来显示地图的view, 它也是派生自android.view.ViewGroup。

地图可以以不同的形式来显示出来,如街景模式,卫星模式等,具体方法可以参考:

setSatellite(boolean), setTraffic(boolean), and setStreetView(boolean)



MapView只能被MapActivity来创建,这是因为mapview需要通过后台的线程来连接网络或者文件系统,而这些线程要由mapActivity来管理。


需要特别说明的一点是,android 1.5中,map的zoom采用了built-in机制,可以通过setBuiltInZoomControls(boolean)来设置是否在地图上显示zoom控件。


MapActivity是一个抽象类,任何想要显示MapView的activity都需要派生自MapActivity。并且在其派生类的onCreate()中,都要创建一个MapView实例,可以通过MapView constructor (then add it to a layout View with ViewGroup.addView(View)) 或者通过layout XML来创建。



实例分析


最后,按照惯例,还是用一个小程序来演示一下android中地图功能的开发。主要功能是实现了地图的缩放,添加了菜单,从而可以手动选择地图的显示模式等。

Step 1: 新建一个android project, 注意这里要选择的build target为"Google APIs"


Step 2: 修改menifest文件:

  • <?xml version="1.0" encoding="utf-8"?>
  • <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  • package="com.map.prac"
  • android:versionCode="1"
  • android:versionName="1.0">
  • <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  • <uses-permission android:name="android.permission.INTERNET" />
  • <application android:icon="@drawable/icon" android:label="@string/app_name">
  • <uses-library android:name="com.google.android.maps" />
  • <activity android:name=".MapViewPrac2"
  • android:label="@string/app_name">
  • <intent-filter>
  • <action android:name="android.intent.action.MAIN" />
  • <category android:name="android.intent.category.LAUNCHER" />
  • </intent-filter>
  • </activity>
  • </application>
  • <uses-sdk android:minSdkVersion="3" />
  • </manifest>



Step 3: 修改layout文件,main.xml

  • <?xml version="1.0" encoding="utf-8"?>
  • <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  • android:id="@+id/main"
  • android:layout_width="fill_parent"
  • android:layout_height="fill_parent">
  • <com.google.android.maps.MapView
  • android:id="@+id/map"
  • android:layout_width="fill_parent"
  • android:layout_height="fill_parent"
  • android:enabled="true"
  • android:clickable="true"
  • android:apiKey="???????????????????????????????????"
  • />
  • </LinearLayout>

这里需要将api key中的????????????改成你自己申请到的api key.




Step 4: 修改代码:

  • package com.map.prac;
  • import com.google.android.maps.GeoPoint;
  • import com.google.android.maps.MapActivity;
  • import com.google.android.maps.MapController;
  • import com.google.android.maps.MapView;
  • import android.app.AlertDialog;
  • import android.app.Dialog;
  • import android.content.DialogInterface;
  • import android.os.Bundle;
  • import android.util.Log;
  • import android.view.KeyEvent;
  • import android.view.Menu;
  • import android.view.MenuItem;
  • public class MapViewPrac2 extends MapActivity {
  • private final String TAG = "MapPrac";
  • private MapView mapView = null;
  • private MapController mc;
  • //Menu items
  • final private int menuMode = Menu.FIRST;
  • final private int menuExit = Menu.FIRST+1;
  • final private int menuCommandList = Menu.FIRST + 2;
  • private int chooseItem = 0;
  • /** Called when the activity is first created. */
  • @Override
  • public void onCreate(Bundle savedInstanceState) {
  • super.onCreate(savedInstanceState);
  • setContentView(R.layout.main);
  • mapView = (MapView)findViewById(R.id.map);
  • mc = mapView.getController();
  • mapView.setTraffic(true); //
  • mapView.setSatellite(false);
  • mapView.setStreetView(true);
  • //GeoPoint gp = new GeoPoint((int)(39.269259 * 1000000), (int)(115.255762 * 1000000));//yixian
  • GeoPoint gp = new GeoPoint((int)(39.95 * 1000000), (int)(116.37 * 1000000));//beijing
  • //mc.animateTo(gp);
  • //mc.setZoom(12);
  • mc.setCenter(gp);
  • //to display zoom control in MapView
  • mapView.setBuiltInZoomControls(true);
  • }
  • @Override
  • public boolean onKeyDown(int keyCode, KeyEvent event) {
  • // TODO Auto-generated method stub
  • Log.i(TAG,"enter onKeyDown");
  • return super.onKeyDown(keyCode, event);
  • }
  • @Override
  • public boolean onCreateOptionsMenu(Menu menu) {
  • menu.add(0, menuMode, 0, "Map Mode");
  • menu.add(0, menuCommandList, 1, "Command List");
  • menu.add(0, menuExit, 2, "Exit");
  • return super.onCreateOptionsMenu(menu);
  • }
  • @Override
  • public boolean onMenuItemSelected(int featureId, MenuItem item) {
  • // TODO Auto-generated method stub
  • switch(item.getItemId())
  • {
  • case menuMode:
  • Dialog dMode = new AlertDialog.Builder(this)
  • //.setIcon(R.drawable.alert_dialog_icon)
  • .setTitle(R.string.alert_dialog_single_choice)
  • .setSingleChoiceItems(R.array.select_dialog_items2, chooseItem, new DialogInterface.OnClickListener() {
  • public void onClick(DialogInterface dialog, int whichButton) {
  • Log.i(TAG, "choose button is "+ whichButton);
  • chooseItem = whichButton;
  • /* User clicked on a radio button do some stuff */
  • }
  • })
  • .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
  • public void onClick(DialogInterface dialog, int whichButton) {
  • /* User clicked Yes so do some stuff */
  • Log.i(TAG,"item = "+chooseItem);
  • switch(chooseItem)
  • {
  • case 0:
  • mapView.setSatellite(false);
  • break;
  • case 1:
  • mapView.setSatellite(true);
  • break;
  • case 2:
  • mapView.setTraffic(true);
  • break;
  • case 3:
  • mapView.setStreetView(true);
  • break;
  • default:
  • break;
  • }
  • }
  • })
  • .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
  • public void onClick(DialogInterface dialog, int whichButton) {
  • /* User clicked No so do some stuff */
  • }
  • })
  • .create();
  • dMode.show();
  • break;
  • case menuCommandList:
  • //create the dialog
  • Dialog d = new AlertDialog.Builder(this)
  • .setTitle(R.string.select_dialog)
  • .setItems(R.array.select_dialog_items, new DialogInterface.OnClickListener() {
  • public void onClick(DialogInterface dialog, int which) {
  • /* User clicked so do some stuff */
  • String[] items = getResources().getStringArray(R.array.select_dialog_items);
  • /*new AlertDialog.Builder(this)
  • .setMessage("You selected: " + which + " , " + items[which])
  • .show();*/
  • Log.i(TAG,"you choose is: " + items[which]);
  • }
  • })
  • .create();
  • //show the dialog
  • d.show();
  • break;
  • case menuExit:
  • finish();
  • break;
  • default:
  • break;
  • }
  • return super.onMenuItemSelected(featureId, item);
  • }
  • @Override
  • protected boolean isRouteDisplayed() {
  • // TODO Auto-generated method stub
  • return false;
  • }
  • }

关于google map的用法还有待各位Android开发人员在实际开发中的总结!

分享到:
评论

相关推荐

    Android结合googlemap应用开发

    在Android应用开发中,结合Google Map提供路径查询和导航功能是一项常见的需求。本文将详细介绍如何在Android设备上实现这一功能,主要涉及Google Directions API的使用和解析返回的路线数据。 首先,Google ...

    google-Map.zip_android_android google map_android map_google map

    在Android开发中,集成Google Maps服务是一个常见的需求,可以为应用程序提供丰富的地图功能。本教程主要围绕"google-Map.zip"这个压缩包,探讨如何在Android应用中使用Google Maps API,实现一个Android客户端的...

    ArcGIS Android API加载GoogleMap及自动离线

    使用ArcGIS for Android开发的加载GoogleMap地图。并判断无网络时自动加载本地图片。图片存放在/ArcGIS/samples/tiledcache/下。在有网络时自动存储地图图片。未做容量控制及清空策略。并集成了从ArcGIS Server缓存...

    Android开发Google_map学习资料

    Android开发Google_map学习资料 里面有API_GoogleMap中文手册.chm Android定位API使用手册.doc Google_地图_API_专业版开发人员指南.doc Google地图API教程.pdf 还另外发布了 Android SQLite--小巧好用的SQLite GUI...

    Android google map开发

    压缩包包含play-services-maps-16.1.0.aar/play-services-places-15.0.1.aar/play-services-location-15.0.1.aar/android-maps-utils-0.5.aar 等...

    android google map 应用

    在Android布局文件中添加MapView组件,通过设置API密钥和初始化GoogleMap对象,可以实现在应用中展示地图。同时,可以通过调整Zoom级别来控制地图的缩放程度,使用CameraPosition和CameraUpdateFactory来改变视图...

    Android_Google_Map.rar_Google api_android_android google map_and

    googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); LatLng sydney = new LatLng(-34, 151); MarkerOptions markerOptions = new MarkerOptions().position(sydney).title("悉尼"); googleMap.addMarker...

    android google map 导航

    在Android平台上实现Google Map导航功能,需要利用Google Maps Android API v2。自2013年起,API进行了重大更新...如果你遇到问题或有技术讨论,可以加入相关的技术交流群,例如文中提到的“杭州Android开发讨论群”。

    android GoogleMap定位(四)

    在Android开发中,GoogleMap API是一个非常重要的工具,它允许开发者在应用中集成地图功能,实现定位、导航、路线规划等复杂操作。本篇将详细探讨如何在Android应用中使用GoogleMap进行定位。 首先,我们需要在项目...

    Android开发Google_map学习资料.zip

    Android开发Google_map学习资料 里面有API_GoogleMap中文手册.chm Android定位API使用手册.doc Google_地图_API_专业版开发人员指南.doc Google地图API教程.pdf 还另外发布了 Android SQLite--小巧好用的SQLite GUI...

    android手机google地图开发时与实际地图上经纬度的转换问题.docx

    四、在Android开发中的应用 在Android Google Map开发中,需要使用上述公式将实际地图上的经纬度转换为Google Map API可使用的经纬度。例如,在Eclipse中,可以使用以下代码将经纬度转换为Google Map API可使用的...

    轨迹记录 android google map 应用

    本实例,"轨迹记录 android google map 应用",是针对Android开发初学者的一个实战项目,它展示了如何在Android设备上实现轨迹记录功能,结合Google Maps展示行走或移动的路径。这个应用对于户外活动、运动健身或者...

    android GoogleMap开发基础

    本文将详细介绍如何进行Android GoogleMap开发的基础设置,包括必要的配置和代码实现。 首先,你需要在Android SDK Manager中下载Google Play Services SDK。这通常位于Extras目录下,下载完成后,你将在SDK目录的...

    AndroidNDK.rar_GoogleMap_android

    在Android开发领域,NDK(Native Development Kit)和Google Map API是两个非常重要的技术。NDK提供了一种方式,让开发者可以使用C/C++原生代码来编写部分应用,以提高性能或者利用特定硬件特性。而Google Map API则...

    android google map example

    在Android开发中,集成Google Maps是一项常见的任务,它允许开发者为用户提供交互式的地图视图。在本示例中,我们将深入探讨如何在Android应用中实现Google Maps的功能,包括获取API密钥、设置权限、集成地图SDK以及...

    android app 基于Google Map计算面积

    在Android应用开发中,利用Google Maps API来计算特定地理区域的面积是一项常见的需求。这主要应用于房地产、农业、地理信息系统(GIS)等多个领域。本文将详细介绍如何在Android应用中集成Google Maps API,并实现...

    Android-Google-Map-APi.doc.zip_android_google map android

    总之,Android Map API v1为开发者提供了集成谷歌地图的基础工具,尽管现在更多的开发倾向于使用更新的版本,理解v1的原理对掌握地图API的整体概念仍然有益。学习并实践这些基本概念,可以帮助开发者更好地理解和...

    Android上Google Map开发的例子程序

    public void onMapReady(GoogleMap googleMap) { mMap = googleMap; // 设置地图类型,如正常地图、卫星图等 mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); // 开启定位功能 mMap.getUiSettings()....

    安卓开发-android写的google map api 应用.zip.zip

    在Android开发中,Google Maps API是一个非常重要的工具,它允许开发者在应用程序中集成地图功能,为用户提供导航、定位、地理编码、路线规划等服务。这个压缩包“安卓开发-android写的google map api 应用.zip.zip...

Global site tag (gtag.js) - Google Analytics