⑴ 关于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时,设置对的级别范围和中心点,否则会导致切出的图片与实际需要不符。如果大家在使用过程有疑问的,欢迎留言交流