android上可以开发离线地图的开源软件有哪些

android上可以开发离线地图的开源软件有哪些,第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\debugkeystore

2

D:\android-sdk-windows-15_r1\tools>keytool -list -alias androiddebugkey -keysto

re "C:\Documents and Settings\sdhbk\android\debugkeystore" -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

<comgoogleandroidmapsMapView

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

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:layout_weight="1"

  android:apiKey="0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"

  />

5Android在sdk15的预装的add-on中提供了一个Map扩展库comgoogleandroidmaps,利用它你就可以给你的android应用程序增加上强大的地图功能了。这个库的位置在Your-SDK_DIR\add-ons\google_apis-3\libs

一定要在manifestxml中设置全相应的权限,比如:

<uses-permission android:name="androidpermissionACCESS_COARSE_LOCATION" />

<uses-permission android:name="androidpermissionINTERNET" />

要在manifestxml中加上要用的maps库:

<manifest xmlns:android=""

package="comexamplepackagename">

<application android:name="MyApplication" >

  <uses-library android:name="comgoogleandroidmaps" />

 

</application>

</manifest>

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

Maps库分析

Maps库提供了十几个类,具体可以参考这里, 包括Mapview,MapController,MapActivity等。

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

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

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

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

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

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

实例分析

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

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

Step 2: 修改menifest文件:

< xml version="10" encoding="utf-8" >

<manifest xmlns:android=""

package="commapprac"

android:versionCode="1"

android:versionName="10">

  <uses-permission android:name="androidpermissionACCESS_COARSE_LOCATION" />

  <uses-permission android:name="androidpermissionINTERNET" />

  <application android:icon="@drawable/icon" android:label="@string/app_name">

  <uses-library android:name="comgoogleandroidmaps" />

  <activity android:name="MapViewPrac2"

android:label="@string/app_name">

  <intent-filter>

  <action android:name="androidintentactionMAIN" />

  <category android:name="androidintentcategoryLAUNCHER" />

  </intent-filter>

  </activity>

  </application>

  <uses-sdk android:minSdkVersion="3" />

</manifest>

Step 3: 修改layout文件,mainxml

< xml version="10" encoding="utf-8" >

<LinearLayout xmlns:android=""

  android:id="@+id/main"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent">

  <comgoogleandroidmapsMapView

  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 commapprac;

import comgoogleandroidmapsGeoPoint;

import comgoogleandroidmapsMapActivity;

import comgoogleandroidmapsMapController;

import comgoogleandroidmapsMapView;

import androidappAlertDialog;

import androidappDialog;

import androidcontentDialogInterface;

import androidosBundle;

import androidutilLog;

import androidviewKeyEvent;

import androidviewMenu;

import androidviewMenuItem;

public class MapViewPrac2 extends MapActivity {

  private final String TAG = "MapPrac";

  private MapView mapView = null;

  private MapController mc;

  //Menu items

  final private int menuMode = MenuFIRST;

  final private int menuExit = MenuFIRST+1;

  final private int menuCommandList = MenuFIRST + 2;

  private int chooseItem = 0;

  / Called when the activity is first created /

  @Override

  public void onCreate(Bundle savedInstanceState) {

  superonCreate(savedInstanceState);

  setContentView(Rlayoutmain);

  mapView = (MapView)findViewById(Ridmap);

  mc = mapViewgetController();

  mapViewsetTraffic(true); //

  mapViewsetSatellite(false);

  mapViewsetStreetView(true);

  //GeoPoint gp = new GeoPoint((int)(39269259 1000000), (int)(115255762 1000000));//yixian

  GeoPoint gp = new GeoPoint((int)(3995 1000000), (int)(11637 1000000));//beijing

  //mcanimateTo(gp);

  //mcsetZoom(12);

  mcsetCenter(gp);

  //to display zoom control in MapView

  mapViewsetBuiltInZoomControls(true);

  }

  @Override

  public boolean onKeyDown(int keyCode, KeyEvent event) {

  // TODO Auto-generated method stub

  Logi(TAG,"enter onKeyDown");

  return superonKeyDown(keyCode, event);

  }

  @Override

  public boolean onCreateOptionsMenu(Menu menu) {

  menuadd(0, menuMode, 0, "Map Mode");

  menuadd(0, menuCommandList, 1, "Command List");

  menuadd(0, menuExit, 2, "Exit");

  return superonCreateOptionsMenu(menu);

  }

  @Override

  public boolean onMenuItemSelected(int featureId, MenuItem item) {

  // TODO Auto-generated method stub

  switch(itemgetItemId())

  {

  case menuMode:

  Dialog dMode = new AlertDialogBuilder(this)

  //setIcon(Rdrawablealert_dialog_icon)

  setTitle(Rstringalert_dialog_single_choice)

  setSingleChoiceItems(Rarrayselect_dialog_items2, chooseItem, new DialogInterfaceOnClickListener() {

  public void onClick(DialogInterface dialog, int whichButton) {

  Logi(TAG, "choose button is "+ whichButton);

  chooseItem = whichButton;

  / User clicked on a radio button do some stuff /

  }

  })

  setPositiveButton(Rstringalert_dialog_ok, new DialogInterfaceOnClickListener() {

  public void onClick(DialogInterface dialog, int whichButton) {

  / User clicked Yes so do some stuff /

  Logi(TAG,"item = "+chooseItem);

  switch(chooseItem)

  {

  case 0:

  mapViewsetSatellite(false);

  break;

  case 1:

  mapViewsetSatellite(true);

  break;

  case 2:

  mapViewsetTraffic(true);

  break;

  case 3:

  mapViewsetStreetView(true);

  break;

  default:

  break;

  }

  }

  })

  setNegativeButton(Rstringalert_dialog_cancel, new DialogInterfaceOnClickListener() {

  public void onClick(DialogInterface dialog, int whichButton) {

  / User clicked No so do some stuff /

  }

  })

  create();

  dModeshow();

  break;

  case menuCommandList:

  //create the dialog

  Dialog d = new AlertDialogBuilder(this)

  setTitle(Rstringselect_dialog)

  setItems(Rarrayselect_dialog_items, new DialogInterfaceOnClickListener() {

  public void onClick(DialogInterface dialog, int which) {

  / User clicked so do some stuff /

  String[] items = getResources()getStringArray(Rarrayselect_dialog_items);

  /new AlertDialogBuilder(this)

  setMessage("You selected: " + which + " , " + items[which])

  show();/

  Logi(TAG,"you choose is: " + items[which]);

  }

  })

  create();

  //show the dialog

  dshow();

  break;

  case menuExit:

  finish();

  break;

  default:

  break;

  }

  return superonMenuItemSelected(featureId, item);

  }

  @Override

  protected boolean isRouteDisplayed() {

  // TODO Auto-generated method stub

  return false;

  }

}

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

以上就是关于android上可以开发离线地图的开源软件有哪些全部的内容,包括:android上可以开发离线地图的开源软件有哪些、android中用高德地图通过地址获取经纬度、Android开发怎么利用Google 地图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10174414.html

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

发表评论

登录后才能评论

评论列表(0条)

保存