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

可以。

获取经纬度位置信息功能的方法:

方法一:使用xGeocoding工具,批量获得Google Earth/Google Map/百度/腾讯/高德等地图的经纬度。工具地址:http://www.gpsspg.com/xgeocoding/。

1.打开百度地图“坐标拾取系统”:输入网址”http://api.map.baidu.com/lbsapi/getpoint/index.html“,进入”坐标拾取系统“

2.进入”坐标拾取系统“后,尺弯陵就可以方便的查询自己的精准地理信息了,我们以”海尔工业园“为例,寻找它的详细坐标。在搜索栏输入“海尔工业园”点击搜索,如图,就会在地图上出现相应的标记,点击你要找的某一个,就能看到相应的坐标。

3.把找到闹祥的坐标输入到搜索栏,把后面“坐标反查”给勾上,点击搜索,就会对应的坐标打上标陵戚记,同时会有相应地址在最右边

4.把鼠标在地图上滑行,你可以看到,鼠标滑到每一个地方,都会显示对应的坐标。

方法二:使用Python程序,直接嵌入即可。


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

原文地址: https://www.outofmemory.cn/yw/12213033.html

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

发表评论

登录后才能评论

评论列表(0条)

保存