Android开发怎么利用Google 地图

Android开发怎么利用Google 地图,第1张

自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.

  打开

填入你的认证指纹(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=""

package="com.example.package.name">

...

<application android:name="MyApplication" >

  <uses-library android:name="com.google.android.maps" />

  ...

</application>

...

</manifest>余纳

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

Maps库分析

Maps库提供了十几个类,具体可以参考这里, 包括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=""

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=""

  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开发人员在实际开发中的总结!

我不凳谨戚确定有哪些小程序可以将手机导航和车载导航同步。不过,你可以考虑使用一些车载导航App,例如Google地图,百度地图,高德地图等,这些车载导航App可以与你的手机相连,并可以同步你的行驶路枣陵线和目的地信息。同时,车载导航App通常都可以通晌缺过语音指导,帮助您更方便地抵达目的地。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12377864.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存