Android(安卓)google map自定义图层
在以前的电子商务项目中,需要在google地图中比较符合用户条件的酒店的位置以及添加相关的说明图层,只是调用google的js实现即可,现在在android开发中可以使用google 的android api实现。
keytool -list -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator\.android\debug.keystore" -storepass android -keypass android
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>cd C:\Program Files\Java\jdk1.6.0_14\bin
C:\Program Files\Java\jdk1.6.0_14\bin>keytool -list -alias androiddebugkey -keys
tore debug.keystore -storepass android -keypass android
keytool错误: java.lang.Exception: Keystore文件存在,但为空文件: debug.keystore
C:\Program Files\Java\jdk1.6.0_14\bin>keytool -list -keystore ~/.android/debug.k
eystore
keytool错误: java.lang.Exception: Keystore 文件不存在: ~/.android/debug.keysto
re
C:\Program Files\Java\jdk1.6.0_14\bin>keytool -help
keytool 用法:
-certreq [-v] [-protected]
[-alias <别名>] [-sigalg <sigalg>]
[-file <csr_file>] [-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-changealias [-v] [-protected] -alias <别名> -destalias <目标别名>
[-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-delete [-v] [-protected] -alias <别名>
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-exportcert [-v] [-rfc] [-protected]
[-alias <别名>] [-file <认证文件>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-genkeypair [-v] [-protected]
[-alias <别名>]
[-keyalg <keyalg>] [-keysize <密钥大小>]
[-sigalg <sigalg>] [-dname <dname>]
[-validity <valDays>] [-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-genseckey [-v] [-protected]
[-alias <别名>] [-keypass <密钥库口令>]
[-keyalg <keyalg>] [-keysize <密钥大小>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-help
-importcert [-v] [-noprompt] [-trustcacerts] [-protected]
[-alias <别名>]
[-file <认证文件>] [-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-importkeystore [-v]
[-srckeystore <源密钥库>] [-destkeystore <目标密钥库>]
[-srcstoretype <源存储类型>] [-deststoretype <目标存储类型>]
[-srcstorepass <源存储库口令>] [-deststorepass <目标存储库口令>]
[-srcprotected] [-destprotected]
[-srcprovidername <源提供方名称>]
[-destprovidername <目标提供方名称>]
[-srcalias <源别名> [-destalias <目标别名>]
[-srckeypass <源密钥库口令>] [-destkeypass <目标密钥库口令>]]
[-noprompt]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-keypasswd [-v] [-alias <别名>]
[-keypass <旧密钥库口令>] [-new <新密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-list [-v | -rfc] [-protected]
[-alias <别名>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-printcert [-v] [-file <认证文件>]
-storepasswd [-v] [-new <新存储库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
C:\Program Files\Java\jdk1.6.0_14\bin>keytool -list -alias androiddebugkey -keys
tore "C:\Documents and Settings\Administrator\.android\debug.keystore" -storepas
s android -keypass android
androiddebugkey, 2011-11-22, PrivateKeyEntry,
认证指纹 (MD5): 1E:2E:00:B0:31:C2:5F:80:50:D8:6C:06:D4:46:2F:B1
C:\Program Files\Java\jdk1.6.0_14\bin\keytool -list -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator\.android\debug.keystore" -storepass android -keypass android
keytool -list -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator\.android\debug.keystore" -storepass android -keypass android
package com.easyway.android.ui;import java.util.List;import android.graphics.drawable.Drawable;import android.os.Bundle;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 com.google.android.maps.Overlay;import com.google.android.maps.OverlayItem;/** * 实现Google 地图中带自定义的图层的方法 * 1. * @author longgangbai * */public class CustomItemizedOverlayActivity extends MapActivity { private MapView mapView; private MapController mapController ; /** * */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置布局 setContentView(R.layout.main); //获取google地图对象 mapView = (MapView) findViewById(R.id.mapView); //设置可以缩放的功能 mapView.setBuiltInZoomControls(true); //获取所有的图层 List<Overlay> mapOverlays = mapView.getOverlays(); //获取图片 Drawable drawable = this.getResources().getDrawable(R.drawable.gps); //获取图表 CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable, this); //北京的中心是北纬39度54分26.37秒,东经116度23分29.22秒。国旗基座的位置是北纬39度54分19.97秒,东经116度23分29.34秒。人民英雄纪念碑的位置是北纬39度54分11.40秒,东经116度23分29.88秒 //设置经纬度 GeoPoint point= new GeoPoint(39971036, 116314659); //创建图层项 OverlayItem overlayitem = new OverlayItem(point, "Hello", "Welcome to beijing's TianAnMen !"); //添加一个图层项 itemizedOverlay.addOverlay(overlayitem); mapOverlays.add(itemizedOverlay); //添加图层项目 mapController = mapView.getController(); //定位到所要的经纬度 mapController.animateTo(point); //以此经纬度为中心 mapController.setCenter(point); mapController.setZoom(6); } @Override protected boolean isRouteDisplayed() { return true; } }
package com.easyway.android.ui;import java.util.ArrayList;import android.app.AlertDialog;import android.content.Context;import android.graphics.drawable.Drawable;import com.google.android.maps.ItemizedOverlay;import com.google.android.maps.OverlayItem;/** * * 自定义地图的图层 * 我们需要为地图多增加一些自定义的功能,比如可以在地图上进行一些标注。 * 为了实现这样的功能,我们可以继承Overlay这个类,这个类是一个基类,提供了 * 可以在地图上添加图层的基本功能。而另外的选择是,我们可以继承itemzedOverlay这个类, * 需要在构造函数中使用Drawable类,这将被用作来绘制一个标记。 * 此外,我们使用ArrayList * 去保存所有的Overlayitems,而createitem和size方法则容易理解了, * 分别是返回每一个 * Overlayitem和返回目前的所有标记的数目。而onTap方法则是在当某个标记在地图上真正标注时 * 所触发的,比如当在触摸屏上点击时,也可以触发该事件。 * * 在这个例子中,我们只是通过弹出对 * 话框的方法展示给用户看。最后,在addOverlay方法中,我们向标记数组mapOverlays中增加 * 一个overlayitem标记,并且调用populate方法将其展示出来。 * * @author longgangbai * */public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem> { private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>(); private Context context; public CustomItemizedOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); } public CustomItemizedOverlay(Drawable defaultMarker, Context context) { this(defaultMarker); this.context = context; } /** * 获取当前图层 */ @Override protected OverlayItem createItem(int i) { return mapOverlays.get(i); } /** * 获取当前图层个数 */ @Override public int size() { return mapOverlays.size(); } /** * 获取当前图层的提示 */ @Override protected boolean onTap(int index) { OverlayItem item = mapOverlays.get(index); AlertDialog.Builder dialog = new AlertDialog.Builder(context); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; } /** * 添加图层的方法 * @param overlay */ public void addOverlay(OverlayItem overlay) { mapOverlays.add(overlay); this.populate(); }}
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.easyway.android.ui" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <!-- 添加访问权限 --> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <!-- 添加google map 的类库 --> <uses-library android:name="com.google.android.maps" /> <activity android:label="@string/app_name" android:name=".CustomItemizedOverlayActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <com.google.android.maps.MapView android:id="@+id/mapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey="0S3Q4ZaVtVDhibBF6eIGl30D9JDmXVdvP4sQvnQ" /> </LinearLayout>
更多相关文章
- Android(安卓)JNI 编程
- Android软件中嵌入地图之二:百度地图
- Android(安卓)百分比、水波、流量剩余进度球的实现
- Android(安卓)App的签名打包(晋级篇)
- 黑马程序员-Android(安卓)maps应用
- Android(安卓)N中不再支持“Crypto”的解决方案
- Android(安卓)手机设置CMWAP 接入点
- Android(安卓)OpenSSL分析及实例
- Android小问题:android studio怎么查看数字签名 sha1(集成百度地图