百度有提供api的,一般是按照api給的網(wǎng)址,在網(wǎng)址后加經(jīng)緯度或者地區(qū)名,但是百度地圖要申請(qǐng)秘鑰的,這個(gè)需要自己去申請(qǐng)一個(gè),免費(fèi)的,類似的功能你可以參考下面的源碼雖然是javascript的,但是java用起來(lái)差不多,畢竟你的地圖肯定是在web頁(yè)面顯示的
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),滄源企業(yè)網(wǎng)站建設(shè),滄源品牌網(wǎng)站建設(shè),網(wǎng)站定制,滄源網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,滄源網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
!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");??????????//?創(chuàng)建地圖實(shí)例??
var?point?=?new?BMap.Point(116.404,?39.915);??//?創(chuàng)建點(diǎn)坐標(biāo)??
map.centerAndZoom(point,?15);?????????????????//?初始化地圖,設(shè)置中心點(diǎn)坐標(biāo)和地圖級(jí)別??
/script??
/body??
/html
用java寫一個(gè)地圖編輯器
記得媒體在采訪c++之父的時(shí)候,他說(shuō)作為程序員,要相信自己能夠解決已經(jīng)理解的任何事情.
換句話說(shuō):您可以解決任何問(wèn)題,只要想得明白
現(xiàn)實(shí)問(wèn)題:開發(fā)一個(gè)基于地磚的二維游戲的地圖編輯器,要求生成兩個(gè)binary文件,各包含一個(gè)二維數(shù)組,*.map存放地磚,花花草草什么的.*.item放道具,比如某個(gè)點(diǎn)可能會(huì)觸發(fā)一個(gè)事件.很簡(jiǎn)單,隨便寫.看到這里您已經(jīng)大致明白程序的整體結(jié)構(gòu).
計(jì)算機(jī)語(yǔ)言:java.
要理解事件必須分析
初步來(lái)看,地圖編輯器:生成某種形式的若干數(shù)組,無(wú)論是哪種形式的數(shù)組,你的目的:
生成數(shù)組.地圖是實(shí)際是一個(gè)(x,y)的二維坐標(biāo)系,這很容易讓人聯(lián)系到:亦無(wú)論
我準(zhǔn)備把設(shè)置兩個(gè)程序界面(主界面/map界面),java的布局管理器不好擺弄,不如分開兩個(gè)class,主界面用jbuilder自動(dòng)創(chuàng)建的application模塊(帶菜單).map界面自己寫,也是jframe,類之間相互傳遞消息,map界面將在程序開始時(shí)被初始化,也可以在程序從主界面中初始化(有問(wèn)題)
構(gòu)建程序
以下內(nèi)容為程序代碼:
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);
有兩個(gè)地方要解釋:
mapbutton:自己寫的一個(gè)類
以下內(nèi)容為程序代碼:
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:
以下內(nèi)容為程序代碼:
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在于處理事件的時(shí)候可以準(zhǔn)確的獲得按鈕的坐標(biāo),忘了說(shuō)了,map界面中我是用按鈕代替地圖方格的.這是很容易想到的,最笨也是最省力的辦法
pic單獨(dú)寫好改,什么時(shí)候內(nèi)容改變了,很容易改,硬要合寫沒(méi)有也隨便.
下面就是事件了
有兩個(gè)事件要處理,第一個(gè)是按鈕事件,第二個(gè)菜單事件
按鈕事件我套用這樣的結(jié)構(gòu)
以下內(nèi)容為程序代碼:
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中把按鈕事件事件單獨(dú)生成一個(gè)類,我不明白,看不懂.真的很高深.
菜單事件模型jbuilder自己加的.overwrite
以下內(nèi)容為程序代碼:
public void *_actionperformed(actionevent e) {...}
用兩個(gè)中間值從主界面向map界面?zhèn)鬟f按了什么:
這里是map界面中的按鈕的事件處理程序
以下內(nèi)容為程序代碼:
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;
}
}
}
}
};
請(qǐng)問(wèn)兩個(gè)中間值是什么呢?一目了然哦
最后是生成map
以下內(nèi)容為程序代碼:
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];
}
}
首先創(chuàng)建工程,并在工程Build PathConfigure Build Path…libraries 中選擇“Add Externel JARs…”,選定
MapApi.jar,點(diǎn)擊OK,這樣就可以將高德地圖Android API 庫(kù)文件引入。然后在工程Build PathConfigure Build
Path…Order and Export 中將引入的庫(kù)文件MapApi.jar 選中,點(diǎn)擊OK,這樣您就可以在您的程序中使用高德地圖API
了。
二、我們?cè)诓皇煜さ那闆r下、先盡量多的添加此軟件應(yīng)用權(quán)限;所以在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
網(wǎng)站標(biāo)題:利用java編寫地圖代碼 我的世界java怎么做地圖
新聞來(lái)源:http://jinyejixie.com/article12/hpcedc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、響應(yīng)式網(wǎng)站、用戶體驗(yàn)、移動(dòng)網(wǎng)站建設(shè)、Google、營(yíng)銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)