
正文
java地图导航系统代码 java地图api
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
怎么用java开发安卓 高德地图
首先创建工程,并在工程Build PathConfigure Build Path…libraries 中选择“Add Externel JARs…”,选定
MapApi.jar,点击OK,这样就可以将高德地图Android API 库文件引入。然后在工程Build PathConfigure Build
Path…Order and Export 中将引入的库文件MapApi.jar 选中,点击OK,这样您就可以在您的程序中使用高德地图API
了。
二、我们在不熟悉的情况下、先尽量多的添加此软件应用权限;所以在mainifest中添加如下代码;插入的位置在
application的代码之前。
Java代码
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/uses-permission
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/uses-permission
uses-permission android:name="android.permission.INTERNET"/uses-permission
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/uses-permission
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/uses-permission
uses-permission android:name="android.permission.READ_PHONE_STATE"/uses-permission
uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/uses-permission
uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/uses-permission
相关问答
Q1: 求一个java写的地图程序
用java写一个地图编辑器
记得媒体在采访c++之父的时候,他说作为程序员,要相信自己能够解决已经理解的任何事情.
换句话说:您可以解决任何问题,只要想得明白
现实问题:开发一个基于地砖的二维游戏的地图编辑器,要求生成两个binary文件,各包含一个二维数组,*.map存放地砖,花花草草什么的.*.item放道具,比如某个点可能会触发一个事件.很简单,随便写.看到这里您已经大致明白程序的整体结构.
计算机语言:java.
要理解事件必须分析
初步来看,地图编辑器:生成某种形式的若干数组,无论是哪种形式的数组,你的目的:
生成数组.地图是实际是一个(x,y)的二维坐标系,这很容易让人联系到:亦无论
我准备把设置两个程序界面(主界面/map界面),java的布局管理器不好摆弄,不如分开两个class,主界面用jbuilder自动创建的application模块(带菜单).map界面自己写,也是jframe,类之间相互传递消息,map界面将在程序开始时被初始化,也可以在程序从主界面中初始化(有问题)
构建程序
以下内容为程序代码:
basepanel.setlayout(new gridlayout(5, 5));
for (byte i = 0; i 9; i++) {
basemapbutton[i] = new
((icon) pic.getimageicon(i, 0));
basemapbutton[i].setbuttontitle(i);
basemapbutton[i].addactionlistener(buttonlistener);
basepanel.add(basemapbutton[i]);
}
itempanel.setlayout(new gridlayout(5, 5));
for (byte i = 0; i 3; i++) {
itemmapbutton[i] = new mapbutton((icon) pic.getimageicon(i, 1));
itemmapbutton[i].setbuttontitle(i);
itemmapbutton[i].addactionlistener(buttonlistener1);
itempanel.add(itemmapbutton[i]);
}
tabbedpane.addtab("bases", basepanel);
tabbedpane.addtab("items", itempanel);
contentpane.add(tabbedpane, borderlayout.center);
有两个地方要解释:
mapbutton:自己写的一个类
以下内容为程序代码:
import javax.swing.icon;
import javax.swing.jbutton;
public class mapbutton extends jbutton {
public mapbutton() {
super();
}
public mapbutton(string arg0) {
super(arg0);
}
public mapbutton(action arg0) {
super(arg0);
}
public mapbutton(icon arg0) {
super(arg0);
}
public mapbutton(string arg0, icon arg1) {
super(arg0, arg1);
}
public byte width, height;
//public pic_w, pic_y;
public void setbuttontitle(byte w, byte h) {
width = w;
height = h;
}
public void setbuttontitle(byte w){
width =w;
}
public byte getbuttonwidth() {
return width;
}
public byte getbuttonheight() {
return height;
}
}
pic:自己写的mappic类的intance:
以下内容为程序代码:
package com.nenghe.mapeditor;
import javax.swing.imageicon;
public class mappic {
imageicon[] baseimages;
imageicon[] itemimages;
imageicon image1;
public mappic() {
init();
}
public void init() {
baseimages = new imageicon[9];
baseimages[0] = new imageicon(mappic.class.getresource("m1.png"/images/wink.gif[/img]);
baseimages[1] = new imageicon(mappic.class.getresource("m2.png"/images/wink.gif[/img]);
baseimages[2] = new imageicon(mappic.class.getresource("m3.png"/images/wink.gif[/img]);
baseimages[3] = new imageicon(mappic.class.getresource("m4.png"/images/wink.gif[/img]);
baseimages[4] = new imageicon(mappic.class.getresource("m5.png"/images/wink.gif[/img]);
baseimages[5] = new imageicon(mappic.class.getresource("m6.png"/images/wink.gif[/img]);
baseimages[6] = new imageicon(mappic.class.getresource("m7.png"/images/wink.gif[/img]);
baseimages[7] = new imageicon(mappic.class.getresource("m8.png"/images/wink.gif[/img]);
baseimages[8] = new imageicon(mappic.class.getresource("m9.png"/images/wink.gif[/img]);
itemimages = new imageicon[3];
itemimages[0] = new imageicon(mappic.class.getresource("error.png"/images/wink.gif[/img]);
itemimages[1] = new imageicon(mappic.class.getresource("i1.png"/images/wink.gif[/img]);
itemimages[2] = new imageicon(mappic.class.getresource("i2.png"/images/wink.gif[/img]);
}
public imageicon getimageicon(int x, int flags) {
if (flags == 0) {
return baseimages[x];
} else if (flags == 1) {
return itemimages[x];
}
return null;
}
}
写mapbutton在于处理事件的时候可以准确的获得按钮的坐标,忘了说了,map界面中我是用按钮代替地图方格的.这是很容易想到的,最笨也是最省力的办法
pic单独写好改,什么时候内容改变了,很容易改,硬要合写没有也随便.
下面就是事件了
有两个事件要处理,第一个是按钮事件,第二个菜单事件
按钮事件我套用这样的结构
以下内容为程序代码:
actionlistener buttonlistener = new actionlistener() {
public void actionperformed(actionevent e) {
//system.out.println(e.tostring());
mapbutton pressedbutton = (mapbutton) e.getsource();
mapdraw.temp_x = pressedbutton.getbuttonwidth();
mapdraw.temp_y = 0;
//system.out.println(mapdraw.temp_x+" "+mapdraw.temp_y);
}
};
....
basemapbutton[i].addactionlistener(buttonlistener);
jbuilder中把按钮事件事件单独生成一个类,我不明白,看不懂.真的很高深.
菜单事件模型jbuilder自己加的.overwrite
以下内容为程序代码:
public void *_actionperformed(actionevent e) {...}
用两个中间值从主界面向map界面传递按了什么:
这里是map界面中的按钮的事件处理程序
以下内容为程序代码:
actionlistener buttonlistener = new actionlistener() {
public void actionperformed(actionevent e) {
mapbutton pressedbutton = (mapbutton) e.getsource();
pressedwidth = pressedbutton.getbuttonwidth();
pressedheight = pressedbutton.getbuttonheight();
if (temp_y == 0) {
if (item[pressedwidth][pressedheight] != 0) {
item[pressedwidth][pressedheight] = 0;
jfm.showmessage("这里的道具已被置空!\nthe item has been null!"/images/wink.gif[/img];
}
map[pressedwidth][pressedheight] = temp_x;
pressedbutton.seticon((icon) pic.getimageicon(temp_x,
temp_y));
} else {
if (map[pressedwidth][pressedheight] == 0) {
jfm.showmessage("道具不能放在这!\nnot put item at this point!"/images/wink.gif[/img];
} else {
if (temp_x == 0) {
byte value = map[pressedwidth][pressedheight];
item[pressedwidth][pressedheight] = 0;
pressedbutton.seticon((icon) pic.getimageicon(
value, 0));
} else {
pressedbutton.seticon((icon) pic.getimageicon(
temp_x, temp_y));
item[pressedwidth][pressedheight] = temp_x;
}
}
}
}
};
请问两个中间值是什么呢?一目了然哦
最后是生成map
以下内容为程序代码:
public void createmap() throws ioexception {
try {
dataoutputstream mapbinaryfile = new dataoutputstream(
new fileoutputstream(mapeditor.filename + "map"/images/wink.gif[/img]);
dataoutputstream itembinaryfile = new dataoutputstream(
new fileoutputstream(mapeditor.filename + "item"/images/wink.gif[/img]);
mapbinaryfile.writebyte(width);
mapbinaryfile.writebyte(height);
for (byte i = 0; i height; i++)
for (byte j = 0; j width; j++) {
//system.out.println(i+" "+j);
byte mapvalue = map[i][j];
byte itemvalue = item[i][j];
if (mapvalue != 0) {
system.out.println(i+" "+j+" "+ mapvalue);
mapbinaryfile.writebyte(j);
mapbinaryfile.writebyte(i);
mapbinaryfile.writebyte(mapvalue);
}
if (itemvalue != 0) {
itembinaryfile.writebyte(j);//x
itembinaryfile.writebyte(i);//y
itembinaryfile.writebyte(itemvalue);
}
}
mapbinaryfile.close();
itembinaryfile.close();
} catch (eofexception e) {
system.err.println("error"/images/wink.gif[/img];
}
}
Q2: 请问哪个网站上有java 的GPS定位地图啊!告诉我吧!3Q
M8800原机自带了一个像垃圾一样的Google地图,其并非GPS导航,而是通过测算手机周边信号发射基站的位置来推断手机大致处于什么位置,这种定位非常不准确,而且由于每次都要在线下载地图,使得流量大增,因此Google地图可谓鸡肋中的鸡肋。br那么,M8800是否真的只能实用这种垃圾地图呢?关键在于小八有没有真正意义上的GPS模块。事实证明,小八是有GPS模块的,这个证明的过程繁杂,在此不叙。那么接下来就是如何通过软件实现小八的导航功能。br市面上流行的手机导航软件基本上只支持智能手机,对小八这个非智能手机来说丝毫没有可能用的上。然而,上帝是眷顾众生滴,于是“乐图”出现了。乐图的定位是利用软件提供地图读取,然后通过手机蓝牙与外置GPS模块连接,使得原本不具备GPS功能的手机享受这一功能。不过由于乐图支持java,使得M8800也分享了能够使用GPS定位导航的快感。br这里有必要插叙一段,由于三星手机系统封闭,在最初的时候M8800使用乐图软件时不能读取记忆卡里的离线地图包,使得实用性大打折扣。乐图论坛的管理员alvin注意到这一情况,经过反复测试、修改终于使m8800能够完美运行乐图导航软件并顺利读取记忆卡里的离线地图,直接为大家省了很多流量钱啊,在此谢谢alvin和乐图团队!我会一直支持乐图的!br好,继续正题,首先下载m8800专用版的乐图软件(附件里有),装入手机(小八如何安装软件不在此文叙述之列,如有疑问请上网上自搜)。在下在软件的同时,也请下载好自己所需的地图包,注意,乐图提供全国主要省、市的离线地图包,如果没有自己所在的地方可以下载乐图专用软件,自己制作地图。还有,无论下载何地的地图,全国地图(也就17M)是一定要下的。同时请注意,m8800下载大缓存模式的地图即可。br下载好全国地图和自己所需的省、市地图压缩包后,请将压缩包内所有dat文件解压至同一个文件夹内并将此文件夹命名为gpslook,然后将gpslook文件夹拷贝至记忆卡根目录。br接下来点击乐图软件,进入乐图。在首次进入软件时会要求注册,那就注册一下吧,乐图是免费软件,反正我没被收过钱。记住你的账号和密码。初次进入会要求你选择缓存目录,我们选择mmc\gpslook即可。br乐图地图采用的是51地图还是不错的,初次进入程序默认是北京,我是上海的怎么办?没事,点击菜单——1、地图——5、定位到城市——2、上海 ok!显示上海了。一些基本操作我这不说了,重点说说如何利用M8800的GPS模块进行精确定位和导航。点击菜单——5、GPS——0、打开缺省GPS——选择“位置服务(内置)”即可。注意,此时在屏幕上方会显示有几个参数,分别是海拔、时速、时间。在没有搜到卫星之前,这几个参数均为0,搜到星以后,这几个数值相应的会有变化。值得一提的是,m8800的GPS模块功能比较弱,对周边环境要求比较高,最好是到相对空旷的地方搜星,同时等待时间有时比较长,需要有一定的耐心。还有,可能是由于三星安置的GPS模块比较封闭,导致即是连接上卫星后,乐图的GPS信息里只有经纬度,而星数仍为0,其实对使用没有影响。br接下来简单说说导航,乐图提供了几种导航服务器,我个人认为乐图和sogou的服务器比较好,另两个服务器不太靠谱。具体设置方法是,菜单——系统——3、GPS和导航设置——导航服务器——选择你想要的导航服务器。在GPS和导航设置这一块还有许多别的选项,大家自己研究我不多说了。返回地图界面后操作也很简单,按照提示设定起点、终点即可。还有些人性化的措施比如搜索相应地名直接设为导航终点,大家自己研究吧~br注意!!(1)第一次所有选项设置好后,必须选择安全退出!可能第一次安全退出时间比较长,但肯定能退出,以后使用也尽量安全退出,否则设置信息无法保存。(2)在某些时候,屏幕会在特定区域出现灰色而不能显示地图,这是由于记忆卡内没有这一级别的地图文件所致,解决办法有二,1、将地图级别调低(即缩小)至可见地图状态(如在最大的14级无法看见的地图,调至8级也许就有了)2、在系统——基本设置中将“自动下载地图”选项调为“开启”。这样在卡里没有相关地图的情况下会从服务器下载地图。br有很多机友会问,实现了离线地图包的乐图需要流量吗?回答是,会需要一点点,这包括登陆时的流量,计算导航路线的流量,下载缺省地图的流量,总之流量非常少可以忽视,大家大可放心。br总之,乐图的出现使得m8800变得更完美了。实际使用下来,定位非常精准,导航也很不错,大家感谢乐图研发人员做出的贡献吧,乐图作为免费软件不容易,大家有钱的就上乐图主页赞助点,没钱的也帮乐图捧个人气这里有个链接 ————brbrbr介绍一些如何使用GPS定位brbr要实现GPS定位和语音导航首先我们需要进行相应的设定br彩单-系统-系统设置(只说一下需要改变的设置,其他没提到的,根据自己需要设置即可)br自动登陆-是(如果需要使用我的标注等GPS相关功能,就需要登陆,建议选择是)brGPS设备类型-位置服务(内置)br启动即连接GPS-打开(如果打开就会启动软件就开始搜索GPS卫星,建议打开)br导航既绑定GPS-打开(绑定GPS就会自动一GPS定位为中心显示地图,地图随着GPS定位点的移动而移动,不可以手动移动到地图其他位置,建议打开)br自动重新计算路径-是(在导航过程中如果你的行驶路径与导航指定的不符即会按照你的路径重新计算,建议打开)br自动下载地图-开启br这些设置设定好之后保存br保存之后最好到菜单里选择安全退出以彻底保存你刚才的设置(注意设置好后不要用手机挂机键来关闭程序,否则重新启动之后又需要重新设置)br现在设置都搞定了brbr我在介绍一下常用的操作方法brbr如果按照刚才的设置br在户外启动程序大概几十秒到几分钟不等的时间就会搜索到GPS卫星定位到你的位置br你可以根据自己的需要在界面左上角的图案放大或者缩小到自己需要的地图大小br如果在菜单-GPS和导航菜单下已经设置好绑定GPS且已经搜星定位成功br即画面中心的实心三角形就是你所在的位置br随着你的移动,三角形会即时显示你移动的方向br界面上方也会显示你移动的速度以及时间br第一次使用时我建议先在地图上找到自己家的位置(如果刚从家出来定位到自己家的位置也可)br设定自己家的定位标注br这样以后无论你走到哪里br需要导航回家的时候就可以快捷的选择导航回家了br找到自己家的位置后的具体操作方法br菜单-我的-我的标注-菜单-新建br名称-HOME(注意一定要全部大写)br经纬度不需要修改br简介和是否公开根据自己喜好修改即可br然后点击MENU-网络保存(建议网络保存,即使重新安装了程序,也可以通过下载而不丢失这个标注)br如此设定就可以了br此时如果你正在其他位置需要导航回家br那么就启动程序直到已经搜星定位成功之后br菜单-GPS和导航-导航回家br既可立即计算你所在位置导航回家的路线并开始导航了brbr最后我说一下未标注的情况下从你所在的位置导航到另一个地方的操作方法br首先要搜索到你要去的地方br有两个方法br一个方法是直接在地图上找到你要去的位置br先要去菜单中取消绑定GPS(如果没有选定绑定就不需要设置)br让界面中心的三角形图案重合你要去的位置br菜单-GPS和导航-设定为导航终点br即开始计算从你所在位置定位到指定位置的导航路线了br另一个方法就是直接搜索br菜单-搜索-位置搜索br城市名-城市名的拼音缩写(例如:大连就是DL)br关键字-输入你要去的地名(例如:星海会展中心)br排除-如果有已知类似名称地址不是你要的可以在这里输入排除,如果没有就不需要填写brMENU-查询br即可搜索到与搜索名称相符的地点br选择你需要的那个地点br菜单-导航到该地br就立刻开始计算导航路线并开始导航了br如果不确认是否是你要的地点br也可以先查看位置进入地图察看br菜单-GPS和导航-设定为导航终点br就立刻开始计算导航路线并开始导航了br先介绍这些br对乐图定位导航软件感兴趣的br也可以到官网了解研究一下br 麻烦.设置.下`最佳.!~.~~.
Q3: 谷歌地图二次开发,java实现获取数据库信息,地图生成标注
给你一个java文件的调用代码,是我测试过的,好用:
var centerLatitude = 33.73518;
var centerLongitude = 113.31073 ;
var startZoom = 14;
var map;
var markerHash={};
var currentFocus=false;
function focusPoint(id){
if (currentFocus) {
Element.removeClassName("sidebar-item-"+currentFocus,"current");
}
Element.addClassName("sidebar-item-"+id,"current");
markerHash[id].marker.openInfoWindowHtml(markerHash[id].address);
currentFocus=id;
}
function filter(type){
for(i=0;imarkers.length;i++) {
var current=markers[i];
if (current.structure_type == type || 'All' == type) {
Element.show("sidebar-item-"+markers[i].id)
if (!markerHash[current.id].visible) {
map.addOverlay(markerHash[current.id].marker);
markerHash[current.id].visible=true;
}
} else {
if (markerHash[current.id].visible) {
map.removeOverlay(markerHash[current.id].marker);
markerHash[current.id].visible=false;
}
Element.hide("sidebar-item-"+markers[i].id)
}
}
}
function windowHeight() {
// Standard browsers (Mozilla, Safari, etc.)
if (self.innerHeight)
return self.innerHeight;
// IE 6
if (document.documentElement document.documentElement.clientHeight)
return document.documentElement.clientHeight;
// IE 5
if (document.body)
return document.body.clientHeight;
// Just in case.
return 0;
}
function handleResize() {
var height = windowHeight() - $('toolbar').offsetHeight - 30;
$('map').style.height = height + 'px';
$('sidebar').style.height = height + 'px';
}
function addMarker(latitude, longitude, id) {
var marker = new GMarker(new GLatLng(latitude, longitude));
GEvent.addListener(marker, 'click',
function() {
focusPoint(id);
}
);
map.addOverlay(marker);
return marker;
}
function init() {
handleResize();
map = new GMap($("map"));
map.addControl(new GSmallMapControl());
map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
for(i=0;imarkers.length; i++) {
var current =markers[i];
marker=addMarker(current.latitude, current.longitude,current.id);
markerHash[current.id]={marker:marker,address:current.address,visible:true};
}
Element.hide('loading');
}
Event.observe(window, 'load', init, false);
Event.observe(window, 'resize', handleResize, false);
Q4: 如何使用java 开发百度地图
百度有提供api的,一般是按照api给的网址,在网址后加经纬度或者地区名,但是百度地图要申请秘钥的,这个需要自己去申请一个,免费的,类似的功能你可以参考下面的源码虽然是javascript的,但是java用起来差不多,毕竟你的地图肯定是在web页面显示的
!DOCTYPE html
html
head
meta name="viewport" content="initial-scale=1.0, user-scalable=no" /
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
titleHello, World/title
style type="text/css"
html{height:100%}
body{height:100%;margin:0px;padding:0px}
#container{height:100%}
/style
script type="text/javascript" src=";ak=您的密钥"
//v2.0版本的引用方式:src=";ak=您的密钥"
//v1.4版本及以前版本的引用方式:src=";key=您的密钥callback=initialize"
/script
/head
body
div id="container"/div
script type="text/javascript"
var map = new BMap.Map("container"); // 创建地图实例
var point = new BMap.Point(116.404, 39.915); // 创建点坐标
map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别
/script
/body
/html
Q5: java类方法中百度地图API
百度地图Web服务API为开发者提供http接口,即开发者通过http形式发起检索请求,获取返回json或xml格式的检索数据。
api官网说明链接:
1、可用接口列举:
获取相关地址提示 place suggestion
水杉region=成都output=jsonak=42b8ececa9cd6fe72ae4cddd77c0da5d
2、获取坐标 geocoding
锦江区菱安路299号output=jsonkey=42b8ececa9cd6fe72ae4cddd77c0da5d
;output=jsonquery=蓝光coco金沙page_size=10page_num=0scope=1region=成都
{
"status":0,
"message":"ok",
"total":2,
"results":[
{
"name":"蓝光COCO金沙",
"location":{
"lat":30.687544,
"lng":103.996691
},
"address":"西三环外金沙西源大道(IT大道旁)",
"uid":"223992992c5ee7e0841541df"
},
{
"name":"蓝光COCO金沙2期",
"location":{
"lat":30.681123,
"lng":103.991123
},
"address":"青羊区金沙IT大道旁",
"uid":"b7bb5abb1cd4982213293580"
}
]
}
3、设施导航
;output=jsonquery=图书馆page_size=20page_num=0scope=2region=成都
4、java测试类:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
public class LocationUtil {
private static final String BAIDU_APP_KEY = "42b8ececa9cd6fe72ae4cddd77c0da5d";
/**
* 返回输入地址的经纬度坐标 key lng(经度),lat(纬度)
*/
public static MapString, String getLatitude(String address) {
try {
// 将地址转换成utf-8的16进制
address = URLEncoder.encode(address, "UTF-8");
// 如果有代理,要设置代理,没代理可注释
// System.setProperty("http.proxyHost","192.168.172.23");
// System.setProperty("http.proxyPort","3209");
URL resjson = new URL(""
+ address + "output=jsonkey=" + BAIDU_APP_KEY);
BufferedReader in = new BufferedReader(new InputStreamReader(
resjson.openStream()));
String res;
StringBuilder sb = new StringBuilder("");
while ((res = in.readLine()) != null) {
sb.append(res.trim());
}
in.close();
String str = sb.toString();
System.out.println("return json:" + str);
if(str!=null!str.equals("")){
MapString, String map = null;
int lngStart = str.indexOf("lng\":");
int lngEnd = str.indexOf(",\"lat");
int latEnd = str.indexOf("},\"precise");
if (lngStart 0 lngEnd 0 latEnd 0) {
String lng = str.substring(lngStart + 5, lngEnd);
String lat = str.substring(lngEnd + 7, latEnd);
map = new HashMapString, String();
map.put("lng", lng);
map.put("lat", lat);
return map;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String args[]) {
MapString, String map = LocationUtil.getLatitude("成都 高新西区西区大道1398号");
if (null != map) {
System.out.println(map.get("lng"));
System.out.println(map.get("lat"));
}
}
}
关于java地图导航系统代码和java地图api的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







