`
longgangbai
  • 浏览: 7266553 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics