`
to_zoe_yang
  • 浏览: 142326 次
  • 性别: Icon_minigender_2
  • 来自: 01
社区版块
存档分类
最新评论

通过Panel中显示google地图

    博客分类:
  • GUI
阅读更多


这个是显示地图的JPanel,通过BrTabbed执行jsp显示,就像浏览器一样
package com.etsolar.monitor.client.mainpanel.gispanel;

import java.awt.BorderLayout;

import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
//Java网页浏览器
import org.jdic.web.BrTabbed;

public class GISPanel extends JPanel { 
	private static final long serialVersionUID = 1L;
	private BrTabbed browser = new BrTabbed();
	public GISPanel(){
		try {
			this.setBorder(BorderFactory.createTitledBorder("GIS Panel"));
			String fileDir = "C:" + System.getProperty("file.separator")+ "etsolar";
			String fileName = fileDir + System.getProperty("file.separator") + "GIS.jsp";
			browser.setURL(fileName);
			this.setLayout(new BorderLayout());
			this.add(new JScrollPane(browser), BorderLayout.CENTER);
			org.jdic.web.BrComponent.DESIGN_MODE = false;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public boolean executeJavaScript(String javaScript)
	{
		boolean result = true;
		return result;
	}
	
	public void refresh()
	{
		browser.refresh();
	}
}


执行的程序,使用XML来保存需要显示的地点的信息(精度和纬度)
import java.awt.BorderLayout;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.jdic.web.BrTabbed;

public class GISTest extends JPanel{

	private BrTabbed browser = new BrTabbed();
	public GISTest(){
		this.setBorder(BorderFactory.createTitledBorder("GIS Panel"));
//		String fileDir = "C:" + System.getProperty("file.separator")+ "etsolar";
		String fileDir = "c://etsolar";
		String fileName = fileDir + System.getProperty("file.separator") + "GIS.jsp";
		browser.setURL(fileName);
		this.setLayout(new BorderLayout());
		this.add(new JScrollPane(browser), BorderLayout.CENTER);
		org.jdic.web.BrComponent.DESIGN_MODE = false;
	}
	
	public void show(){
		String num1Str = "30.657";
		String num2Str = "104.08";
		Document document = DocumentHelper.createDocument();
		Element catalogElement = document.addElement("description");
		catalogElement.addComment("An XML description of a machine");
		catalogElement.addProcessingInstruction("target", "text");
		Element detailElement = catalogElement.addElement("detail");
		detailElement.addAttribute("publisher", "NJUST");
		Element LongitudeElement = detailElement.addElement("Longitude");
		LongitudeElement.setText(num1Str);
		Element LatitudeElement = detailElement.addElement("Latitude");
		LatitudeElement.setText(num2Str);
		String fileDir = "C:" + System.getProperty("file.separator")
				+ "etsolar";
		String fileName = fileDir + System.getProperty("file.separator")
				+ "MAP.xml";
		XMLWriter output;
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("UTF-8");
		try {
			output = new XMLWriter(new FileWriter(fileName), format);
			output.write(document);
			output.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		//System.out.println("经纬度信息已经写入XML文件" + "经度: [" + num1Str + "],"					+ "纬度: [" + num2Str + "]");
		this.refresh();
	}
	
	public boolean executeJavaScript(String javaScript)
	{
		boolean result = true;
		return result;
	}
	
	public void refresh()
	{
		browser.refresh();
	}
	
	public static void main(String[] args){
		JFrame frame = new JFrame("GISTest");
		GISPanel gisPanel = new GISPanel();
		JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
				new JPanel(), gisPanel);
		frame.add(splitPane);
		splitPane.updateUI();
		frame.setVisible(true);
		frame.setSize(400, 500);
	}
}


这个只最重要的jsp文件啦
GIS.jsp

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
		<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
		<title>Etsolar Google Maps </title>	
		<script src="http://ditu.google.com/maps?file=api&amp;v=2"
            type="text/javascript"></script>
		<script type="text/javascript">
		var Url="C:\\etsolar\\MAP.xml";
		var x;var y;
		var cdsales=new ActiveXObject("Microsoft.XMLDOM"); 
		cdsales.async=true; 
		cdsales.load(Url); 
		function initialize()
		{
			if(cdsales.readyState==4)
			{
				if(cdsales.parseError.errorCode != 0)
				{
					document.write(cdsales.parseError.line);
					document.write(cdsales.parseError.reason);
					document.write(cdsales.parseError.srcText);
				}
				else
				{
					var bi=cdsales.documentElement.selectNodes("//detail");
					if(bi!=null)
					{
							x=bi[0].childNodes[0].text;
							y=bi[0].childNodes[1].text;
					}
				}
			}
			else
			{
				document.write("XML文档未分析完");
			}
			
			if(GBrowserIsCompatible())
			{
				var map = new GMap2(document.getElementById("maps"));
				map.addControl(new GSmallMapControl());
				map.addControl(new GMapTypeControl());
				var blueIcon = new GIcon(G_DEFAULT_ICON); 
				blueIcon.image = "computer20.gif"; 
                 
				markerOptions = { icon:blueIcon }; 

				var point = new GLatLng(x,y);
				var marker = new GMarker(point,markerOptions);
				map.setCenter(point,19);
        map.addOverlay(marker);
				GEvent.addListener(map,"click", function(overlay,point) {        
       	if(point)
				{
						document.getElementById("show_x").value = point.x;
        		document.getElementById("show_y").value = point.y;
				}  
        });
        map.addControl(new GSmallMapControl());   
				map.addControl(new GMapTypeControl());   
			}
		}
	</script>
</head>
	
	<body onLoad="initialize()" onUnload="GUnload()">
		<b><font color="#FF0000">经度:</font></b><input id="show_x" value="0">&nbsp;&nbsp;<b><font color="#FF0000">纬度:</font></b><input id="show_y" value="0">
		<div id="maps" style="width:1000px;height:700px"></div>
	</body>
</html>
分享到:
评论
1 楼 to_zoe_yang 2011-04-05  
以后自己改改,可以自己输入精度和纬度~

相关推荐

    android transparent panel on google mapview

    在Android开发中,有时我们需要在地图视图(Google Map View)上添加一层透明面板,以实现某些交互功能或视觉效果。这个"android transparent panel on google mapview"的示例代码正是针对这一需求的实践。透明面板...

    C# (winform)计算机地图制图程序

    SharpMap支持多种地理空间数据格式,包括Shapefile,可以通过投影变换将地图坐标转换为屏幕坐标,以便在Winform应用中显示。GMap.NET则集成了Google Maps、Bing Maps等在线地图服务,提供了丰富的地图瓦片显示和定位...

    google map api 调用

    对于开发者来说,想要在自定义地图中实现类似功能,需要利用 Google Maps API 中的 `GDirections` 类。通过 `loadFromWaypoints()` 方法,可以加载包含多个途经点的路线,这些点可以是地址或坐标。例如: ```...

    canoe panel.zip

    6. **地图API**:为了显示航行路线,可能使用了Google Maps API或其他地图服务。 7. **数据分析**:收集的数据可能需要进行分析,例如通过统计和可视化来帮助用户理解他们的表现或环境条件。 由于没有更多的信息,...

    Extjs google map调用

    在IT行业中,ExtJS是一个非常流行的JavaScript框架,用于构建富客户端Web应用程序。它提供了一整套组件和工具,...通过深入学习和实践,你可以掌握如何在ExtJS中灵活调用Google Maps API,实现各种定制化的地图功能。

    EE06 API Controls.docx

    GEE 提供了一个综合性的 Web 应用程序界面(API),该界面包含四个主要面板:Mapping Panel(地图面板)、Reporting Panel(报告面板)、Reference Panel(参考面板)和 Scripting Panel(脚本面板)。这些面板共同...

    超大图像显示方式

    这个项目可能包含了一个自定义的控件,如VirtualizingTilePanel,它继承自WPF(Windows Presentation Foundation)中的Panel类,用以优化超大图像的显示。 VirtualizingTilePanel的工作原理是将超大图像分割成多个...

    Google Maps API V3 Examples 官方示例打包

    Google Maps API V3 是 Google 提供的一个强大工具,允许开发者在自己的网页中嵌入交互式的地图功能。这些示例旨在帮助开发者更好地理解和应用这个API,从而创建出丰富多样的地图应用程序。 1. **default.css** 这...

    EE09 Maps.docx

    在Google Earth Engine中,地图(Map)是一种特殊的Widget对象,用于表示EE网页中的映射面板(Map Panel),在这个面板上,地理空间数据以地图的形式展示出来。通过地图Widget,用户可以执行多种操作,如设置中心点、...

    Openlayers测距测面积

    本文将详细介绍如何在OpenLayers中实现这一功能,特别是在Google地图下进行投影变换的处理。 首先,我们需要创建一个Vector图层来存储用户绘制的几何对象,例如路径和多边形。以下代码展示了如何创建这个图层并将其...

    kirby-styledmap:Kirby CMS标记和页面方法可打印常规或样式化的Google地图

    柯比风格的Google地图 Kirby CMS标记和页面方法可打印常规或样式化的Google Map。 注意:这不是一个免费的插件。 为了在生产服务器上使用它,您需要购买许可证。 有关Kirby Styledmap许可模型的详细信息,请向下...

    Flex Gis 开发

    2. **使用地图**:集成地图服务,如Google Maps API或ArcGIS Server API,用于显示地图数据。 3. **地图使用范围设置**:限制地图的显示范围,如设定特定的经纬度坐标范围。 4. **添加工具栏**:为地图添加工具栏,...

    Android 仿高德地图可拉伸的BottomSheet的示例代码

    前言 ... Bottom Sheet中的内容默认是隐藏起来的,只显示很小一部分,可以通过在代码中设置其状态或者手势操作将其完全展开,或者完全隐藏,或者部分隐藏。对于Bottom Sheet的描述可以在官网查询:

    Flex开发实例.pdf

    - Flex支持集成地图服务,如Google Maps API,可以在应用中显示地图并进行交互。 #### 3. **地图使用范围设置** - 可以通过API设置地图的显示范围、缩放级别等参数,以便更好地适应具体的应用场景。 #### 4. **...

    自定义控件demo

    3. **侧滑面板(Swipeable Panel)**:侧滑面板通常用于实现类似抽屉式的效果,比如谷歌地图中的侧滑导航栏。可以使用CoordinatorLayout结合Behavior来实现,也可以使用DrawerLayout。主要关注滑动手势的识别和面板...

    Flex详细文档.pdf

    - **使用地图**: 集成第三方地图服务,如Google Maps API等。 - **地图使用范围设置**: 定义地图的初始位置、缩放级别等。 - **添加工具栏**: 创建自定义工具栏,包含常用的地图操作按钮。 - **绘制工具**: 提供绘图...

    Flex开发实例

    - 可以通过API设置地图的显示范围和缩放级别。 **4. 添加工具栏** - 通过自定义工具栏来增加地图的操作功能。 **5. 绘制工具** - Flex提供绘图工具,如绘制多边形、圆形等。 **6. 地图图层介绍** - 地图通常...

    ExtJS 4.2+JAVA通用后台管理系统(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8)

    Panel里包含2个组件,在2个组件间传递参数显示数据。 三、开发工具和采用技术 1、开发工具:Eclipse、MyEclipse和其他IDE。 2、采用Spring 3中最新最稳定的Spring MVC 3.2.8版本。 3、采用Hibernate 4.1.7。Spring...

Global site tag (gtag.js) - Google Analytics