- 浏览: 126421 次
文章分类
最新评论
-
qzwlf:
Android(四)数据存储之五网络 -
jiaoshiyao:
...
http响应头介绍 -
cherishlive:
请问Standard MBean如何支持复杂类型,可否大概的讲 ...
JMX MBeans之三Open MBean -
nihongye:
...
JMX MBeans之三Open MBean -
discolt:
报错
javax.management.MBeanExcep ...
JMX MBeans之四Model MBean (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.
打开http://code.google.com/intl/zh-CN/android/maps-api-signup.html
填入你的认证指纹(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="http://schemas.android.com/apk/res/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库提供了十几个类,具体可以参考这里http://code.google.com/intl/ja/android/add-ons/google-apis/reference/index.html, 包括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="http://schemas.android.com/apk/res/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="http://schemas.android.com/apk/res/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开发人员在实际开发中的总结!
评论
打开Eclipse--->Windows--->Preferences--->Android--->Build
查看默认的debug keystore位置(C:\Users\(主机名)\.android\debug.keystore).在命令提示符窗口(在运行中输入cmd)中定位到debug.keystore所在的文件夹:cd C:\Users\(主机名)\.android\ 上面主机名是你本机上的主机名
执行:keytool -list -keystore debug.keystore 提示输入密码,默认密码是:android
发表评论
-
android博客
2010-10-11 10:23 830http://www.getideas.cn/?cat=4 -
在android的程序里面使用ROOT权限
2010-10-09 16:11 462/*** * 获取超级用户权限 ... -
Android经典教程
2010-10-09 15:52 24131、传智播客——Android开发(一)Android搭建、H ... -
Android(五)数据存储之五网络数据交互 3
2010-10-09 15:51 1432其中使用到的HttpRequester类: packa ... -
Android(五)数据存储之五网络数据交互 2
2010-10-09 15:50 14683.ClientService类 package c ... -
Android(五)数据存储之五网络数据交互 1
2010-10-09 15:49 2218昨天我们只对Android接收网络数据进行了简单介绍,今天我们 ... -
Android(四)数据存储之五网络
2010-10-09 15:48 1367既然是3G开发,网络重要性自然不必多说!Android的网 ... -
Android(四)数据存储之四ContentProvider 2
2010-10-09 15:47 9793.测试SQLite示例程序的ContentProvider ... -
Android(四)数据存储之四ContentProvider
2010-10-09 15:44 1241早上我们简要的对SQLite进行回顾,然后将SQLite的事务 ... -
Android(三)数据存储之三SQLite嵌入式数据库 3
2010-10-09 15:43 1502在mail.xml所在目录里添加一个contactitem.x ... -
Android(三)数据存储之三SQLite嵌入式数据库 2
2010-10-09 15:42 18784.编写ContactsService类 Co ... -
Android(三)数据存储之三SQLite嵌入式数据库 1
2010-10-09 15:40 1603前两篇日志我已经总结 ... -
Android(三) 数据存储之二 SharedPreferences
2010-10-09 15:39 1473在此之前的学习内容是数据存储之一文件存储。在本地存储中常用的有 ... -
Android(三)数据存储之XML解析技术 2
2010-10-09 15:38 1556二、Pull解析技术 Pull解析技术与Sax ... -
Android(三)数据存储之XML解析技术 1
2010-10-09 15:36 1459今日继续学习Android中使用Pull的XML解析技术实现对 ... -
Android(二)数据存储和访问 之文件 1
2010-10-09 15:35 1134package com.changcheng.file. ... -
Android(二)数据存储和访问 之文件 1
2010-10-09 15:32 1234今日重点内容是Adnroid的数据存储和访问。Android的 ... -
Android开发(一)发送短信程序
2010-10-09 15:31 1075一、创建 Android工程 Project name:Se ... -
Android开发(一)拨打电话程序
2010-10-09 15:30 1647一、创建 Android工程 Project name:Ca ... -
Android开发(一)Android搭建、HelloWorld
2010-10-09 15:29 1294万众瞩目,Android终于开课了。本课程有黎活明老师主讲,讲 ...
相关推荐
Android结合google map应用开发,路径查询设定,路径导航。
使用ArcGIS for Android开发的加载GoogleMap地图。并判断无网络时自动加载本地图片。图片存放在/ArcGIS/samples/tiledcache/下。在有网络时自动存储地图图片。未做容量控制及清空策略。并集成了从ArcGIS Server缓存...
Android开发Google_map学习资料 里面有API_GoogleMap中文手册.chm Android定位API使用手册.doc Google_地图_API_专业版开发人员指南.doc Google地图API教程.pdf 还另外发布了 Android SQLite--小巧好用的SQLite GUI...
Android开发Google_map学习资料 里面有API_GoogleMap中文手册.chm Android定位API使用手册.doc Google_地图_API_专业版开发人员指南.doc Google地图API教程.pdf 还另外发布了 Android SQLite--小巧好用的SQLite GUI...
压缩包包含play-services-maps-16.1.0.aar/play-services-places-15.0.1.aar/play-services-location-15.0.1.aar/android-maps-utils-0.5.aar 等...
android google map的开发入门 从搭建环境 申请API Key到几个关键类的使用
android开发之Googlemap 有需要的就下载啊啊
android GoogleMap开发步骤详解,包含代码
一、申请google Maps API key(用于开发和debug) 二.Google Map API的使用 三.实例开发
Android上Google Map开发的例子程序
第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 ...
安卓开发-android写的google map api 应用.zip.zip
googleMap apk JAVA 开发的google Map
分别是RSS阅读器、基于GoogleMap的个人GPS、豆瓣客户端、在线音乐播放器、手机信息助手, * 随书附赠的光盘中包含389分钟的详细教学视频以及Android开发必备开发资源,部分教学视频免费下载地址:...
9.6 移动版GoogleMap——Geocoder反查Address对象 9.7 规划导航路径——DirectionsRoute 9.8 移动设备上的Picasa相册——GooglePicasaAPI 9.9 随身翻译机——GoogleTranslateAPI 第10章 创意Android程序设计 10.1 ...
Android版本Google地图开发: GPS+Google地图; 移动版Google+Map; 以经纬度查找目的地
精心收集的android googlemap开发实例与教程,调用gps定位,以及给定经纬度显示地图信息等示例代码
Android使用Google Map API创建的一个根据经纬度定位的程序. 交流QQ群:1279871
本书内容上涵盖了用android开发的大部分场景,从android基础介绍、环境搭建、sdk介绍、market使用,到应用剖析、组件介绍、实例演示等方面。从技术实现上,讲解了5个android平台下的完整综合实例及源代码分析,...