您的位置:首页 > 移动开发 > Android开发

Android系统Google Maps开发实例浅析

2012-06-18 21:23 459 查看
Google Map(谷歌地图)是Google公司提供的电子地图服务。包括了三种视图:矢量地图、卫星图片、地形地图。对于Android系统来说,可以利用Google提供的地图服务来开发自己的一些应用。Google Map的服务体现在两个方面:地图API和位置API。使用Android Maps API(地图API)和Android Location API(定位API)可以轻松实现实用而且强大的功能。

我的位置:“我的位置”在地图上显示你的当前位置(通常在 1000 米范围之内)。即使没有 GPS,你也可以确定自己的位置。谷歌手机地图还支持内置 GPS,也可以链接到蓝牙GPS 传感器,以便更准确地确定用户的位置。“我的位置”功能是通过识别你附近无线发射塔的信息广播而确定你的位置的。

地图和卫星视图:谷歌手机地图向你提供所查看地区的地图和卫星视图,其界面的使用感觉与你在台式机上相同。 可沿其中一个方向滚动,以查看地图上的更多内容;或使用快捷键进行缩放。

商户列表:借助于Google 的本地搜索引擎,可以按名称(如“星巴克”)或类型(如“咖啡”)搜索商家,查看商店的营业时间和评分,然后,只需点击一下即可拨通感兴趣的商家的电话。有了“我的位置”功能,甚至都不需要输入当前位置即可方便地找到附近的商家。

驾车路线:可以很方便地获得驾车路线,其中会清楚地标明每次转弯。有了“我的位置”功能,甚至都不需要输入出发点。

公交换乘:查看公交和地铁线路,确定转车路线,制定你在全球 80 多个城市的出行计划。“公交换乘”功能目前适用于黑莓、Windows Mobile、S60 和其他支持 Java 的手机。

路况信息:Google 地图中的公路会根据实时路况数据,以绿色、***或红色显示。

收藏夹:为你常去的地方加上书签,以便能在地图上非常方便地返回到这些地方。



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 -keystore "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.

打开http://code.google.com/intl/zh-CN/android/maps-api-signup.html,填入你的认证指纹(MD5)即可获得apiKey了,结果显示如下:

感谢您注册 Android 地图 API 密钥!
您的密钥是:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

4. 使用得到的apiKey:

在layout中加入MapView

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;   
      
    @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;   
      
    }   
    })   
    .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {   
    public void onClick(DialogInterface dialog, int whichButton) {   
      
    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) {   
      
    }   
    })   
    .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) {   
      
    String[] items = getResources().getStringArray(R.array.select_dialog_items);   
      
    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开发人员在实际开发中的总结!

转自:无线时代
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: