java開(kāi)發(fā)地圖代碼 java地圖api

求一個(gè)java寫(xiě)的地圖程序

用java寫(xiě)一個(gè)地圖編輯器

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了錫林郭勒盟免費(fèi)建站歡迎大家使用!

記得媒體在采訪(fǎng)c++之父的時(shí)候,他說(shuō)作為程序員,要相信自己能夠解決已經(jīng)理解的任何事情.

換句話(huà)說(shuō):您可以解決任何問(wèn)題,只要想得明白

現(xiàn)實(shí)問(wèn)題:開(kāi)發(fā)一個(gè)基于地磚的二維游戲的地圖編輯器,要求生成兩個(gè)binary文件,各包含一個(gè)二維數(shù)組,*.map存放地磚,花花草草什么的.*.item放道具,比如某個(gè)點(diǎn)可能會(huì)觸發(fā)一個(gè)事件.很簡(jiǎn)單,隨便寫(xiě).看到這里您已經(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的布局管理器不好擺弄,不如分開(kāi)兩個(gè)class,主界面用jbuilder自動(dòng)創(chuàng)建的application模塊(帶菜單).map界面自己寫(xiě),也是jframe,類(lèi)之間相互傳遞消息,map界面將在程序開(kāi)始時(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:自己寫(xiě)的一個(gè)類(lèi)

以下內(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:自己寫(xiě)的mappic類(lèi)的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;

}

}

寫(xiě)mapbutton在于處理事件的時(shí)候可以準(zhǔn)確的獲得按鈕的坐標(biāo),忘了說(shuō)了,map界面中我是用按鈕代替地圖方格的.這是很容易想到的,最笨也是最省力的辦法

pic單獨(dú)寫(xiě)好改,什么時(shí)候內(nèi)容改變了,很容易改,硬要合寫(xiě)沒(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è)類(lèi),我不明白,看不懂.真的很高深.

菜單事件模型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];

}

}

怎么用java開(kāi)發(fā)安卓 高德地圖

首先創(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

如何使用java 開(kāi)發(fā)百度地圖

百度有提供api的,一般是按照api給的網(wǎng)址,在網(wǎng)址后加經(jīng)緯度或者地區(qū)名,但是百度地圖要申請(qǐng)秘鑰的,這個(gè)需要自己去申請(qǐng)一個(gè),免費(fèi)的,類(lèi)似的功能你可以參考下面的源碼雖然是javascript的,但是java用起來(lái)差不多,畢竟你的地圖肯定是在web頁(yè)面顯示的

!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

分享標(biāo)題:java開(kāi)發(fā)地圖代碼 java地圖api
當(dāng)前網(wǎng)址:http://muchs.cn/article18/doesogp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)、域名注冊(cè)定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)