java模拟生成城市地图实例,模拟城市地形图

本文目录一览:

百度地图api java怎么用

一、申请密钥

1、先用eclipse创建一个Android工程

2、在百度api官网上申请一个密钥,链接:

bubuko.com,布布扣

二、工程配置

1、将baidumapapi_vX_X_X.jar拷贝到工程libs目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi

目录下,拷贝完成后,如下所示:

注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。

bubuko.com,布布扣

2、右键工程属性,在Libraries中选择“Add External JARs”,选择baidumapapi_vX_X_X.jar,确定返回

配置好以上步骤,即可使用百度地图了

三、显示百度地图

1、在android配置清单文件中AndroidManifest.xml添加开发密钥和所需权限

application meta-data android:name=”com.baidu.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.baidu.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();

}

}

如何使用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

求一个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];

}

}

谷歌地图二次开发,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);

一个java小游戏简单的地图编辑器怎么做

点图放置,记录位置坐标,最后根据这些坐标和图片生成就行了

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/307410.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2025-01-02 18:06
下一篇 2025-01-02 18:06

相关推荐

  • Python生成随机数的应用和实例

    本文将向您介绍如何使用Python生成50个60到100之间的随机数,并将列举使用随机数的几个实际应用场景。 一、生成随机数的代码示例 import random # 生成50个6…

    编程 2025-04-29
  • 如何在dolphinscheduler中运行chunjun任务实例

    本文将从多个方面对dolphinscheduler运行chunjun任务实例进行详细的阐述,包括准备工作、chunjun任务配置、运行结果等方面。 一、准备工作 在运行chunju…

    编程 2025-04-28
  • Python存为JSON的方法及实例

    本文将从以下多个方面对Python存为JSON做详细的阐述。 一、JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅…

    编程 2025-04-27
  • 分析if prefixoverrides="and |or"的用法与实例

    if语句是编程语言中最为基础和常见的控制流语句,而prefixoverrides是if语句的一个重要属性。其中,prefixoverrides的常见取值为and和or。那么,这两者…

    编程 2025-04-27
  • Tanimoto系数用法介绍及实例

    本文将详细讲解Tanimoto系数的定义和使用方法,并提供相关实例代码以供参考。 一、Tanimoto系数概述 Tanimoto系数也称为Jaccard系数,是计算两个集合相似度的…

    编程 2025-04-27
  • C#可变参数的应用与实例

    一、可变参数的概念 可变参数是C#中的一个特性,它允许定义一个参数数量不确定的方法,也称作变长参数,即方法内传递的参数个数可以动态变化。使用可变参数,可以简化方法的重载,增加函数的…

    编程 2025-04-25
  • Modbus RTU通讯实例详解

    一、Modbus RTU通讯是什么? Modbus RTU通讯是一种串行通讯协议,广泛应用于工业自动化领域。通过Modbus RTU通讯协议,能够实现在不同设备之间的数据交换。 在…

    编程 2025-04-20
  • JS确认框confirm用法实例

    一、简介 JS的确认框confirm是常用的弹窗功能之一,常用于提示用户是否执行某项操作。例如,在用户点击删除按钮时,通常会弹出确认框,询问用户是否确认删除。本文将从多个方面进行详…

    编程 2025-04-18
  • 马氏距离计算实例详解

    马氏距离是一种常见的数据分析算法,主要用于测量两个样本集的相似度。相较于欧几里得距离,马氏距离考虑了不同特征之间的相关性,并使用协方差矩阵来对特征进行权重调整。本文将深入探讨如何使…

    编程 2025-04-13
  • WSLShutdown——一个Windows应用程序,用于关闭WLS实例

    一、介绍 WSLShutdown是一个小型的Windows应用程序,支持关闭当前WLS实例,或者全部关闭已经在运行的WLS实例。WLS是Windows Subsystem for …

    编程 2025-04-12

发表回复

登录后才能评论