
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.
打开
填入你的认证指纹(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=""
package="com.example.package.name">
...
<application android:name="MyApplication" >
<uses-library android:name="com.google.android.maps" />
...
</application>
...
</manifest>
需要说明的是这个库不是标准的android sdk的内容,你也可以自己从这里这里下载并放到你的sdk里面。
Maps库分析
Maps库提供了十几个类,具体可以参考这里, 包括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=""
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=""
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开发人员在实际开发中的总结!
离线地图导出后,要自己加载的,并不是那个目录下的,C:\Users\用户名<你的计算机用户名>\AppData\Local\GMap.NET\TileDBv5\en下的那个文件包含缓存的。代码如下:
MapManagerLoader.Instance.Load(ConfigurationManager.AppSettings["MapData"])// 载入离线地图数据,MapData自己在appSetting中定义
this.MainMap.Manager.Mode = AccessMode.CacheOnly//地图读取模式:服务器/本地缓存
其中MapManagerLoader代码如下:
using System.Threading
using GMap.NET
namespace Client.WPF.Util
{
public class MapManagerLoader
{
private static readonly MapManagerLoader _instance = new MapManagerLoader()
public static MapManagerLoader Instance
{
get { return _instance}
}
private MapManagerLoader()
{
}
private bool _isLoaded
public bool Load(string fileName)
{
if (!_isLoaded)
{
new Thread(() =>GMaps.Instance.ImportFromGMDB(fileName)).Start()
_isLoaded = true
}
return _isLoaded
}
}
}
手机电子地图软件MapViewGPS(GPS地图)地图DIY方法在PC上制作电子地图:第一步:
我们需要一张图片,就是地图。从纸地图扫描也行,从网站上抓图抓的也行……总之只要是一张图片
(BMP、jpe、tip格式都行),这是最基本的啦。(假设这张地图文件是“深圳.bmp”)
第二步:
我们需要一个可以生成地图数据库的软件:OziExplorer
下载地址:http://www2.skycn.com/soft/13472.html(天空软件站,版本号3.95.3b)
最新版本3.95.4,不要紧,国内服务器下载要快些,将就着用吧。看了看,说是个共享软件,但可以
使用全部功能,也可以保存,只是只能连续使用一个小时,超过一个小时就要重启电脑后才能继续使用…
…重启就重启,这软件卖85个$,换算成¥,是700个¥……
启动这个程序,点击:“File”→“Load and Calibrate Map Image”项,会d出一个窗口,选择您
的那张地图图片。以后所有的数据都是基于这张图片的。(如下图)
此主题相关图片如下:
这时右边变成下图这样。
在这里可以定义“Point”,也就是路点,或叫关键点。你可以在比如下图的“深圳中学”上点一下
,这点就会出现同心圆,然后在右侧窗口中输入数据(鼠标所指处):
Lat 纬度 Long 经度 那个框的数据意思也就是要你输入那个座标点是北纬多少度多少分,西
经多少度多少分的意思。(如果不是用来定位,就随便输入吧)
同样再定义一个座标点,因为程序要求至少有两个座标点才可以生成地图文件。
定义结束后,点击下面的保存,即可生成一个.map扩展名的文件了。(我假设命名为“深圳.map”)
用记事本打开这个“深圳.map”,把“深圳.bmp”前面的路径名删除后保存。
此主题相关图片如下:
第三步:
压缩图片。图片那么大,放手机里哪受得了?所以“GPS地图”作者开发了一个专用的压缩工具:img2ogf.exe
本帖包含附件 20057252016988227.rar ( 217.66 KByte,已被以下用户kiesboywunokia6600myron251watsonzhangwoshishabi6817cooltao30000owen__zhuljzy大侠0723kalsonjackminenostarsskybecham1981ttaa72scoutlinjiegan土流氓rayliu4343yuzhilianfang-sirsjc8655anezkaQQMMdavid070yunqijaviweiliang1980tiamoapollojin6298491flywchlsk320zz02111yjxyangquikjupiter00000pastorleizietczjmixiaoxushiwocentaozhudeyanjinxu9587nan1976yadansnyzhaodansummer_seanoxfan80sdwytkangkangwuwuzhllinux落队的候鸟jessicanodzyur罗爱吴hgvheericvanibshiwosddzlzjnenhuangsniper_ywjpolice峰月晓溪minibug121kien2008kevin_fenny16072363211majormaTrigtwd2639Lost2004jxm_888peterquick18266013fanldsQDxsxgwfrankyvlinyang5258ddyy纯真笑颜nuaajackyljq8888swzhaisuperkuaigqanxlfjg123gxwjgzooyorketjtyqilmarexwsc20wangworker东方蜘蛛mlaserliyaopengyukejinglpp840703halxjyd888b999josssirrightsidemn70-wdyinghuarenu_levergxf3663justjfjfjfjfamir655dxmcnasdfchina2006moling_36wuyan263netfkyyangsealhhx飘儿qdw1maxellmxyjk_dnouyanghongdaychristianworkdxpm12345mdgcklwxst1515grandymm极速30002018999chenjf888kingakun可意MMzaqxsw666fangchun3cpchen79shidong20dqballddxxyy2001leonfeniliguohongch_lfdfdabced123pjx6wuzl60912yahooyangdrl82110533364798wangba120lw6363548lekedan111matao526guozhen84abcdaxj790921zsw821016sxszzypingxqiujunjian789cai172845几几歪歪gphwmbengoudongjs218kemazipypy7954AndyGan徒步小孩zuoqicglitaozhihhhhhsxty_lezaingpanpan418619as232batmannokia7610liaohonglovestatcw4everpylin极品土匪yxh00321panda288pzh970343swl68gloryc2bo0010mysharehht752zx100wlzt4563636苏三tlfeagleswq50413559589887jal7610kuangren4444mideryoungseachacha04wongmuntang791424super24110zhuan119robot111111woshiwaxiu11053581lipeng17gjcr112yp918ooddbamboo46山上打老虎jianxia0519ashfieldlvyongboyztao手机生命huangzilutanjingrulzxyhglwqsaerkaxiaxx下载 226 次 )
这个软件就太简单了,见下图:
只有一个按钮,点击后选择你的地图图片,会在原文件所在的文件夹产生一个同名不同扩展名的文件。(假设生成的是“深圳.ogf2”)
至此,我们从“深圳.bmp”生成了两个文件“深圳.map”、“深圳.ogf2”,地图制作已经大功告成!
此主题相关图片如下:
在手机上查看电子地图:
在手机上安装完“GPS地图”软件后(强烈推荐安装在E盘即存储卡上),此程序会在根目录下建如下文件夹:
\Document\MapViewGPS\audio
\Document\MapViewGPS\maps
\Document\MapViewGPS\names
\Document\MapViewGPS\tracks
\Document\MapViewGPS\waypoints
这里面的\maps就是放地图的地方啦,把刚才制作的“深圳.map”“深圳.ogf2”两个文件复制到这里就可以了!
软件中其它的功能大家自己了解(如果实在必要,我另开一贴写教程),基本上都能明白了,这里主要讲几点:
1、地图放在\maps目录后,要重新启动程序,才能被识别。
2、.map文件与.ogf2文件必须同名。
3、请在查看时在“查看”菜单中把“显示路径”“显示栅格”“显示参数”选项去掉,不然可能会不正常(因为我没有标准的.map地图,下面这张是我DIY的)
4、程序存在一些不稳定因素,我测试英文版时就发现了,毕竟是免费软件,要求不能太高,但在我的手机上测试未出现白屏等危险因素。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)