⑴ 關於java開發2d游戲地圖問題
分析:
地圖->排列好的地圖元素->N個載入圖片的對象->單個圖片->位置X,Y,寬高W,H,顏色,ARGB,等相關屬性
舉例:
地圖元素的實現:
class m_Cell
{
m_Cell();
~m_Cell();
Image m_img;
int x,y,w,h;
int A,R,G,B;
}
地圖M的實現:
class M
{
m_Cell cell=new m_Cell[10];//定義10個地圖元素
for(int i=0;i<10;i++)
{
cell[i].x=i*cell[i].w;
draw(cell[i]);
}
}
實現10個地圖元素的地圖在1行的平鋪,如果想加2,3,4行,那代碼里的X下面加上Y的和H的變化就可以了.
滾屏請查看卡馬克演算法..一般游戲都是參照這個經典演算法的.除了DX貌似是全屏刷新基本不需要之外,2D盡量採用這種演算法
⑵ Java Eclipse來開發地圖,用什麼插件
1. Log4E
Log4E支持Java項目使用日誌,不依賴於任何Log框架,可以通過配置支持各種日誌框架,例如Log4J、JDK 1.4日誌記錄和SLF4J。Log4E高級版本提供了擴展功能,如可編輯模板、在常用日誌框架中使用Jakarta字元串生成器,預覽向導,首選范圍等。總體來說,Log4E是一款實用且受歡迎的插件。
2. Mylyn
Mylyn可以將任務管理和上下文管理無縫集成到Eclipse中,是一款強大的任務和應用程序生命周期管理(ALM)框架。Mylyn基於Eclipse,提供以任務為重點的界面、工具和API,幫助開發人員執行多任務,避免信息過載。另外,Mylyn還集成了很多有用的工具,如Jira,Bugzilla和Trac,這些工具可以提供任務管理和離線編輯功能
3 Spring IDE
Spring IDE是一個Eclipse插件套件,主要用於開發基於Spring的應用,支持Spring AOP(面向方面的編程),Spring Web Flow和Spring JavaConfig。除此之外,開發人員還可以使用向導、文本和圖形編輯器來創建Spring配置文件和新的Spring項目。
4. FindBugs
FindBugs是一個免費的開源軟體應用程序,主要作用是幫助開發人員發現Java代碼中的錯誤,它能夠分析Java1.0到1.8所有版本編譯的代碼。FindBugs可以作為流行IDE的可用插件,如Eclipse,Netbeans和IntelliJ等。另外,它還為開發人員提供雲存儲功能,幫助他們查找和共享某些問題的評估信息。
5. Eclipse Checkstyle
Checkstyle是一種廣泛使用的Java源代碼檢查工具,它能夠自動化檢查Java代碼是否符合規范。Eclipse Checkstyle集成了多個Eclipse工作區插件的Checkstyle代碼分析器,允許開發人員配置自定義編碼標准和規則,一旦出現任何違反標准和規則的代碼就會及時反饋和警告,發現的違例或偏差可作為代碼編輯器注釋、Eclipse問題視圖和Checkstyle違例視圖。
6. Eclim
Eclim是一款用於將Eclipse IDE的代碼編輯功能與Vim(一種支持多種編程語言的流行文本編輯器)集成的插件。通過這一插件Java開發人員可以訪問幾個重要功能,如代碼完成提示、代碼驗證、Java文檔和源代碼搜索,支持Checkstyle和正則表達式測試。程序員還可以利用Eclim編輯HTML,Python,Ruby,JavaScript等代碼。此外,第三方Eclim客戶端還支持其他文本編輯器,例如Sublime Text 2,TextMate和Emacs。
7. Apache IvyDE
Apache IvyDE是一個用於將Eclipse Ivy(一個依賴項管理器)與Eclipse IDE集成的插件。 Apache Ivy是Apache Ant的一個子項目,是一個基於Java的軟體工具,用於自動化構建過程。 Apache IvyDE提供了強大的功能,如Java依賴關系管理,支持傳遞依賴,Ivy XML文件編輯器,託管類路徑容器和反向依賴關系瀏覽器。
8. EGit
Git是一款流行的免費開源分布式版本控制軟體,EGit集成了Eclipse Team Framework與GIT,它能夠保存用戶創建的任何新提交的更新,並且實現了對於代碼每次修改的整個歷史的跟蹤。 EGit項目是在「The JGit Project」(GIT的Java實現)之上實現Eclipse工具。
9. P4Eclipse
P4Eclipse是一個強大的解決方案,用於集成Eclipse IDE與Perforce Helix版本控制引擎。 P4Eclipse是Eclipse IDE的Helix插件,它為Eclipse提供基本的Helix操作,支持Eclipse Team Framework中的敏捷和傳統開發工作流程, P4Eclipse為Eclipse IDE用戶提供了一些有用的功能,如代碼審查,協作,調試,復雜重構等等。
10. Hibernate Tools
Hibernate Tools是一套用於Eclipse IDE的插件,允許Java開發人員利用Hibernate3的強大功能。Hibernate是一個用於Java平台的對象關系映射工具,它是JBoss Tools的重要組成部分。Hibernate工具為Eclipse IDE提供了一系列的功能,如映射編輯器,Hibernate控制台,統一Ant任務和資料庫逆向工程。
⑶ 如何用JAVA獲取GOOGLE 地圖經緯度,地址信息
第一步 、申請一個GOOGLE地圖的KEY
1、根據地址獲取經緯度
[java] view plain print?
public static void getGoogleLatLng() {
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
// 創建httpget.
HttpGet httpget = new HttpGet("https://maps.google.com/maps/api/geocode/json?address=上海市&sensor=false&key=");
logger.debug("executing request " + httpget.getURI());
// 執行get請求.
CloseableHttpResponse response = httpclient.execute(httpget);
try {
// 獲取響應實體
HttpEntity entity = response.getEntity();
logger.debug("--------------------------------------");
// 列印響應狀態
System.out.println(response.getStatusLine());
if (entity != null) {
// 列印響應內容
String str = EntityUtils.toString(entity);
JSONObject o = (JSONObject) JSON.parse(str);
JSONArray o2 = (JSONArray) o.get("results");
JSONObject o3 = (JSONObject) o2.get(0);
JSONObject o4 = (JSONObject) o3.get("geometry");
JSONObject o5 = (JSONObject)o4.get("location");
logger.debug("lat====>>>"+o5.get("lat")+";lng=====>>>"+o5.get("lng"));
}
logger.debug("------------------------------------");
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
logger.debug(e.getMessage());
} catch (ParseException e) {
e.printStackTrace();
logger.debug(e.getMessage());
} catch (IOException e) {
e.printStackTrace();
logger.debug(e.getMessage());
} finally {
// 關閉連接,釋放資源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
logger.debug(e.getMessage());
}
}
}
2、根據經緯度獲取地址信息
[java] view plain print?
public static String getGoogleAddres(BigDecimal lat, BigDecimal lng) {
String addr = "";
if(null == lat || null == lng){
return addr;
}
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
// 創建httpget.
HttpGet httpget = new HttpGet(MessageFormat.format("https://maps.google.com/maps/api/geocode/json?latlng={0},{1}&sensor=false&&language=zh-CN&key=", lat, lng));
logger.debug("executing request " + httpget.getURI());
// 執行get請求.
CloseableHttpResponse response = httpclient.execute(httpget);
try {
// 獲取響應實體
HttpEntity entity = response.getEntity();
logger.debug("--------------------------------------");
// 列印響應狀態
System.out.println(response.getStatusLine());
if (entity != null) {
// 列印響應內容
String str = EntityUtils.toString(entity);
JSONObject o = (JSONObject) JSON.parse(str);
JSONArray o1 = (JSONArray)o.get("results");
JSONObject o2 = (JSONObject)o1.get(0);
if(null != o2){
addr = String.valueOf(o2.get("formatted_address"));
logger.debug("詳細地址====>>>"+addr);
JSONArray o3 = (JSONArray)o2.get("addressComponent");
logger.debug("地址明細====>>>"+JSONArray.toJSONString(o3));
}
}
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
logger.debug(e.getMessage());
} catch (ParseException e) {
e.printStackTrace();
logger.debug(e.getMessage());
} catch (IOException e) {
e.printStackTrace();
logger.debug(e.getMessage());
} finally {
// 關閉連接,釋放資源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
logger.debug(e.getMessage());
}
}
return addr;
}
⑷ 用java編寫一個學校地圖
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"[img]/images/wink.gif[/img]);
baseimages[1] = new imageicon(mappic.class.getresource("m2.png"[img]/images/wink.gif[/img]);
baseimages[2] = new imageicon(mappic.class.getresource("m3.png"[img]/images/wink.gif[/img]);
baseimages[3] = new imageicon(mappic.class.getresource("m4.png"[img]/images/wink.gif[/img]);
baseimages[4] = new imageicon(mappic.class.getresource("m5.png"[img]/images/wink.gif[/img]);
baseimages[5] = new imageicon(mappic.class.getresource("m6.png"[img]/images/wink.gif[/img]);
baseimages[6] = new imageicon(mappic.class.getresource("m7.png"[img]/images/wink.gif[/img]);
baseimages[7] = new imageicon(mappic.class.getresource("m8.png"[img]/images/wink.gif[/img]);
baseimages[8] = new imageicon(mappic.class.getresource("m9.png"[img]/images/wink.gif[/img]);
itemimages = new imageicon[3];
itemimages[0] = new imageicon(mappic.class.getresource("error.png"[img]/images/wink.gif[/img]);
itemimages[1] = new imageicon(mappic.class.getresource("i1.png"[img]/images/wink.gif[/img]);
itemimages[2] = new imageicon(mappic.class.getresource("i2.png"[img]/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;
}
}
⑸ 百度地圖api java怎麼用
一、申請密鑰
1、先用eclipse創建一個Android工程
2、在網路api官網上申請一個密鑰,鏈接:http://lbsyun..com/apiconsole/key
bubuko.com,布布扣
二、工程配置
1、將mapapi_vX_X_X.jar拷貝到工程libs目錄下,將libBaiMapSDK_vX_X_X.so拷貝到libs\armeabi
目錄下,拷貝完成後,如下所示:
註:liblocSDK3.so和locSDK_3.1.jar為網路定位SDK所使用資源,開發者可根據實際需求自行添加。
bubuko.com,布布扣
2、右鍵工程屬性,在Libraries中選擇「Add External JARs」,選擇mapapi_vX_X_X.jar,確定返回
配置好以上步驟,即可使用網路地圖了
三、顯示網路地圖
1、在android配置清單文件中AndroidManifest.xml添加開發密鑰和所需許可權
<application> <meta-data android:name="com..lbsapi.API_KEY" android:value="開發者 key" /> </application>
所需許可權
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
2、在xml布局中添加地圖控制項
<com..mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
?3、在應用程序創建時初始化,SDK引用的全局變數Context
注意:在SDK各功能組件使用之前都需要調用
SDKInitializer.initialize(getApplicationContext());,因此我們建議該方法放在Application的初始化方法中
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//在使用SDK各組件之前初始化context信息,傳入ApplicationContext
SDKInitializer.initialize(getApplicationContext());
System.out.println("SDKInitializer一初始化");
}
}
設置自定義的application為默認應用
<application
android:name="com.bao.ah.MyApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各組件之前初始化context信息,傳入ApplicationContext
//注意該方法要再setContentView方法之前實現
//SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
}
}
4、網路地圖應和Activity生命周期綁定
public class MainActivity extends Activity {
MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各組件之前初始化context信息,傳入ApplicationContext
//注意該方法要再setContentView方法之前實現
//SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//獲取地圖控制項引用
mMapView = (MapView) findViewById(R.id.bmapView);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity執行onResume時執行mMapView. onResume (),實現地圖生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity執行onPause時執行mMapView. onPause (),實現地圖生命周期管理
mMapView.onPause();
}
}
⑹ javaweb 開發有哪些地圖插件是到鄉鎮級別的
這個應該沒有。因為現在的地圖數據就是到縣級。到鄉鎮的邊界說實話,連政府自己都搞不清。
⑺ 想用java 做一個平台,能夠調用百度或谷歌地圖並在地圖上顯示定位位置和軌跡回放,涉及java 的那些知識
如果是WEB方式,需要:
java開發移動端APP,獲取GPS數據並存入資料庫
頁面JSP調用網路地版圖API
地圖上權所需的位置坐標從資料庫中查詢
涉及到的知識比較廣,JSP\JAVA ANDROID IDE\J2SE\HTML\DATABASE
⑻ java開發 怎麼把圖層放到百度地圖上
如果要在網路地圖上實現一張自己自定義的地圖,就需要使用網路地圖自定義圖層介面。實現效果如下:
但是網路地圖中關於自定義圖層的介紹甚少,便以此博文以記錄,方便同行了解和使用。
網路地圖官方文檔中,關於自定義圖層的介紹是這樣的:
=========華麗麗的分隔線===========
自定義圖層
地圖坐標系
在使用自定義圖層前,您需要了解網路地圖的地圖坐標系,網路地圖坐標系涉及:
經緯度球面坐標系統
墨卡托平面坐標系統
圖塊編號系統
經緯度是一種利用三維空間的球面來定義地球上的空間的球面坐標系,它能夠標示地球上任何一個位置。通過倫敦格林尼治天文台原址的經線為0度經線,從0度經線向東、向西各分180度。赤道為0度緯線,赤道以北的緯線稱為北緯、以南的稱為南緯。在網路地圖中,東經和北緯用正數表示,西經和南緯用負數表示。例如北京的位置大約是北緯39.9度,東經116.4度,那麼用數值標示就是經度116.6,緯度39.9。
在網路地圖中,習慣經度在前,緯度在後,例如:
var point = new BMap.Point(116.404, 39.915); // 創建點坐標,經度在前,緯度在後
由於網路地圖是顯示在平面上的,因此在地圖內部系統中需要將球面坐標轉換為平面坐標,這個轉換過程稱為投影。網路地圖使用的是墨卡托投影。墨卡托平面坐標如下圖所示,平面坐標與經緯度坐標系的原點是重合的。
網路地圖在每一個級別將整個地圖劃分成若干個圖塊,通過編號系統將整個圖塊整合在一起以便顯示完整的地圖。當地圖被拖動或者級別發生變化時,地圖API將會根據平面坐標計算出當前視野內所需顯示的圖塊的編號。網路地圖圖塊編號規則如下圖所示:
從平面坐標原點開始的右上方向的圖塊編號為0,0,以此類推。在最低的縮放級別(級別 1)中,整個地球由 4 張圖塊組成。隨著級別的增長,地圖所使用的圖塊個數也隨之增多。
定義取圖規則
通過TileLayer類開發者可以實現自定義圖層。其中,TileLayer實例的getTilesUrl方法需要實現,用來告訴API取圖規則。getTilesUrl方法的參數包括tileCoord和zoom,其中tileCoord為圖塊的編號信息,zoom為圖塊的級別,每當地圖需要顯示特定級別的特定位置的圖塊時就會自動調用此方法,並提供這兩個參數。使用者需要告知API特定編號和級別所對應的圖塊的地址,這樣API就能正常顯示自定義的圖層了。
添加和移除自定義圖層
以下代碼在每個圖塊的所有縮放級別上顯示一個簡單的透明疊加層,使用浮動紅色小水滴表示圖塊的輪廓。
var map = new BMap.Map("l-map"); // 創建地圖實例
var point = new BMap.Point(116.404, 39.915); // 創建點坐標
map.centerAndZoom(point,15); // 初始化地圖,設置中心點坐標和地圖級別
var tilelayer = new BMap.TileLayer(); // 創建地圖層實例
tilelayer.getTilesUrl=function(){ // 設置圖塊路徑
return "layer.gif";
};
map.addTileLayer(tilelayer); // 將圖層添加到地圖上
=========華麗麗的分隔線============
這里講得讓人一知半解,最主要的是,文檔中並沒有說明如何實現getTilesUrl方法,以及如何實現將一張自己的地圖分隔成符合網路地圖要求的圖塊。
現在記錄一下我解決這個問題的過程。
首先,我先下載網路地圖瓦格圖片切圖工具:https://github.com/jiazheng/BaiMapTileCutter
其次,找到自己的地圖,導入其中進行切片,參考Sup_Heaven轉的博文:http://blog.csdn.net/sup_heaven/article/details/8461586
最後將圖片放入項目資源文件中,實現getTitlesUrl方法即可。
這里需要補充一下的同,Sup_Heaven轉的博文中,並沒有詳細說明中心點和瓦格圖片之間的關系,只告訴我們其然卻不知其所以然。藉助度娘了解。網路地圖的所有瓦格圖片都是256px*256px的正方形圖片,其圖片的位置由經緯度和放大倍數zoom決定,所以在使用工具TileCutter時,設置對的級別范圍和中心點,否則會導致切出的圖片與實際需要不符。如果大家在使用過程有疑問的,歡迎留言交流