`

【zk开发】zk5.0.3中使用google 地图 v3

    博客分类:
  • ZK
阅读更多

由于zk的gmaps2.0.5提供的事件不能满足项目的需求,昨天写了一个电话号码定位的例子,号码是使用爬虫爬过来的,号码地点对

 

 

index.zul页面代码

 

<?xml version="1.0" encoding="utf-8"?>
<?page id="indexPage" title="linkMaps" cacheable="false" language="xul/html" zscriptLanguage="Java" contentType="text/html;charset=UTF-8"?>
<?script src="/js/linkMaps.js" type="text/javascript"?>
<?script src="http://maps.google.com/maps/api/js?sensor=false&amp;region=GB" type="text/javascript"?>
<window id="gmapsWin" xmlns:h="http://www.w3.org/1999/xhtml"
	xmlns:n="http://www.zkoss.org/2005/zk/native" xmlns="http://www.zkoss.org/2005/zul"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd"
	xmlns:w="http://www.zkoss.org/2005/zk/client" apply="com.xxx.linkMaps.web.zk.controller.GmapsController">
	<image src="/images/32.png"></image>
	纬度
	<textbox id="txtLat" cols="50"></textbox>
	,经度
	<textbox id="txtLng" cols="50"></textbox>
	<textbox id="txtAddress" cols="50"></textbox>
	<button label="搜索" mold="os" forward="onGoogleSearch" />
	<div id="map_canvas" height="700px">
	</div>
</window>

 

 

 

关键js代码

 

 

(function(window) {
	var linkMap = {
		map : false,
		geocoder : false,
		initialize : function() {
			var myLatlng = new google.maps.LatLng(33.10160322191529,
					110.8020810546875);
			var myOptions = {
				zoom : 4,
				center : myLatlng,
				mapTypeId : google.maps.MapTypeId.ROADMAP
			};
			this.map = new google.maps.Map(jq("$map_canvas")[0], myOptions);
			this.geocoder = new google.maps.Geocoder();
			google.maps.event.addListener(this.map, 'bounds_changed',
					function() {
						linkMap.onMapBoundschanged();
					});
			google.maps.event.addListener(this.map, 'center_changed',
					function() {
						linkMap.onMapCenterchanged();
					});
			google.maps.event.addListener(this.map, 'click', function(event) {
				linkMap.onMapclick(event.latLng);
			});
			google.maps.event.addListener(this.map, 'dblclick',
					function(event) {
						linkMap.onMapDblclick(event.latLng);
					});
			google.maps.event.addListener(this.map, 'drag', function() {
				linkMap.onMapDrag();
			});
			google.maps.event.addListener(this.map, 'dragend', function() {
				linkMap.onMapDragend();
			});
			google.maps.event.addListener(this.map, 'dragstart', function() {
				linkMap.onMapDragstart();
			});
			google.maps.event.addListener(this.map, 'idle', function() {
				linkMap.onMapIdle();
			});
			google.maps.event.addListener(this.map, 'maptypeid_changed',
					function() {
						linkMap.onMapTypeIdchanged();
					});
			google.maps.event.addListener(this.map, 'mousemove',
					function(event) {
						linkMap.onMapMousemove(event.latLng);
					});
			google.maps.event.addListener(this.map, 'mouseout',
					function(event) {
						linkMap.onMapMouseout(event.latLng);
					});
			google.maps.event.addListener(this.map, 'mouseover',
					function(event) {
						linkMap.onMapMouseover(event.latLng);
					});
			google.maps.event.addListener(this.map, 'projection_changed',
					function() {
						linkMap.onMapProjectionchanged();
					});
			google.maps.event.addListener(this.map, 'resize', function() {
				linkMap.onMapResize();
			});
			google.maps.event.addListener(this.map, 'rightclick', function(
					event) {
				linkMap.onMapRightclick(event.latLng);
			});
			google.maps.event.addListener(this.map, 'tilesloaded', function() {
				linkMap.onMapTilesloaded();
			});
			google.maps.event.addListener(this.map, 'zoom_changed', function() {
				linkMap.onMapZoomchanged();
			});
		},
		codeAddress : function(phone, address) {
			linkMap.geocoder.geocode( {
				'address' : address
			}, function(results, status) {
				var location = results[0].geometry.location;
				if (status == google.maps.GeocoderStatus.OK) {
					zAu.send(new zk.Event(zk.Widget.$(jq("$gmapsWin")),
							"onCodeAddressSuccessful", [phone,location.lat(),location.lng()]));
					// linkMap.map
					// .setCenter(results[0].geometry.location);
					// var marker = new google.maps.Marker( {
					// map : linkMap.map,
					// position : results[0].geometry.location
					// });
				} else {
					zAu.send(new zk.Event(zk.Widget.$(jq("$gmapsWin")),
							"onCodeAddressFailture", [phone]));
				}
			});
		},

		onMapBoundschanged : function() {
		},
		onMapCenterchanged : function() {
		},
		onMapclick : function(latLng) {

		},
		onMapDblclick : function(latLng) {
		},
		onMapDrag : function() {
		},
		onMapDragend : function() {
		},
		onMapDragstart : function() {
		},
		onMapIdle : function() {
		},
		onMapTypeIdchanged : function() {
		},
		onMapMousemove : function(latLng) {
			jq("$txtLat").attr("value", latLng.lat());
			jq("$txtLng").attr("value", latLng.lng());
		},
		onMapMouseout : function(latLng) {
		},
		onMapMouseover : function(latLng) {
		},
		onMapProjectionchanged : function() {
		},
		onMapResize : function() {
		},
		onMapRightclick : function(latLng) {
		},
		onMapTilesloaded : function() {
		},
		onMapZoomchanged : function() {
		}
	};
	
	//等待zk Engine启动,然后加载地图
	function waitBooted() {
		if (zk.booted) {
			linkMap.initialize();
		} else {
			setTimeout(function() {
				waitBooted();
			}, 50);
		}
	}
	setTimeout(function() {
		waitBooted();
	}, 200);
	window.linkMap = linkMap;
})(window);
 

 

 

后体代码

 

 

public class GmapsController extends GenericForwardComposer {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7539000732062612449L;

	public void onGoogleSearch() {
		String phone = "234234234";
		String address = "美国";
		Clients.evalJavaScript("linkMap.codeAddress('" + phone + "','"
				+ address + "');");
	}

	/**
	 * 当查询成功的时候
	 * 
	 * @param event
	 */
	public void onCodeAddressSuccessful(Event event) {
		Object []o=(Object[])event.getData();
		System.out.println(o[0]);
		System.out.println(o[1]);
		System.out.println(o[2]);
	}

	/**
	 * 当查询失败的时候
	 * 
	 * @param event
	 */
	public void onCodeAddressFailture(Event event) {
		Object []o=(Object[])event.getData();
		System.out.println(o[0]);
	}
}
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    Da14580官方开发包SDK5.0.3

    《Da14580官方开发包SDK5.0.3详解》 Da14580是一款由Dialog Semiconductor公司推出的高性能蓝牙低功耗(Bluetooth Low Energy, BLE)芯片,广泛应用于物联网、智能穿戴设备、健康监测等领域。其官方开发包SDK5.0.3...

    xmlbeans-5.0.3-API文档-中文版.zip

    赠送jar包:xmlbeans-5.0.3.jar; 赠送原API文档:xmlbeans-5.0.3-javadoc.jar; 赠送源代码:xmlbeans-5.0.3-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    redis-5.0.3.zip

    如果你打算在生产环境中使用,可能需要调整默认配置以适应更高的并发和数据量。例如,你可以设置适当的内存限制、调整持久化策略、配置主从复制或搭建集群。 标签中的“nosql”指的是非关系型数据库,Redis作为...

    串口调试助手uartassist 5.0.3

    串口调试助手UARTAssist 5.0.3是一款针对串行通信进行调试的专业软件,尤其在嵌入式系统开发和物联网设备调试中扮演着重要角色。它支持标准的UART(通用异步接收发送器)协议,使得用户可以通过PC与各种设备进行数据...

    网络调试助手NetAssist5.0.3.zip

    《网络调试助手NetAssist5.0.3——深度解析Netty开发与测试》 在IT行业中,网络通信是至关重要的部分,而Netty作为一款高性能、异步事件驱动的网络应用框架,广泛应用于服务器端的开发。针对Netty的开发与测试,有...

    asm-5.0.3.jar

    asm-5.0.3.jarasm-5.0.3.jar

    arm服务器redis5.0.3

    arm服务器redis5.0.3

    metronic v5.0.3最新版

    为了帮助开发者更好地理解和使用Metronic v5.0.3,配套的文档详尽而全面,涵盖了安装指南、基本用法、API参考、示例代码等,无论是初学者还是经验丰富的开发者,都能从中受益。 1. **快速入门**:文档提供清晰的...

    串口调试助手UartAssist 5.0.3

    在实际应用中,UartAssist 5.0.3常用于嵌入式系统开发、单片机调试、智能家居设备测试、工业自动化设备的通信验证等场景。通过这个工具,开发者可以快速定位通信故障,减少因硬件或软件问题导致的调试时间,极大地...

    spring-5.0.3官方jar包

    在5.0.3版本中,它进一步优化了容器的性能和内存使用,提高了容器的可扩展性。 2. **IoC(Inversion of Control)与DI(Dependency Injection)**:Spring通过IoC反转控制实现了对对象的管理,使得应用程序不再负责...

    php-5.0.3-Win32

    PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发,可嵌入到HTML中使用。PHP 5.0.3是其历史上的一个重要版本,尤其对于Windows用户来说,该版本以其稳定性和兼容性赢得了用户...

    使用Pentaho Data Integration 5.0.3 (Kettle)整合数据库(Salesforce数据Demo)

    使用Pentaho Data Integration 5.0.3整合SQL Server数据库和Salesforce数据的一个Demo,包括ppt,kettle文件及所有数据库backup文件及参考文档及代码。

    xmlbeans-5.0.3-API文档-中英对照版.zip

    赠送jar包:xmlbeans-5.0.3.jar; 赠送原API文档:xmlbeans-5.0.3-javadoc.jar; 赠送源代码:xmlbeans-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    Spring-5.0.3.RELEASE完整版

    Spring框架是Java开发中的一个核心组件,尤其在企业级应用中占据了举足轻重的地位。Spring 5.0.3.RELEASE作为其一个重要版本,它带来了诸多新特性和性能优化,为开发者提供了更强大的工具集。本篇将围绕Spring的核心...

    HiTool-STB-5.0.3.zip

    HiTool-STB-5.0.3是海思为开发者和制造商提供的一款专门针对其芯片产品的烧写工具,旨在简化设备的固件更新和调试过程,确保设备的稳定运行与高效开发。 一、HiTool功能特性 1. **固件烧写**:HiTool支持对海思...

    woodstox-core-5.0.3-API文档-中英对照版.zip

    赠送jar包:woodstox-core-5.0.3.jar; 赠送原API文档:woodstox-core-5.0.3-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    qt-vs-addin-1.2.5+qt-creator-5.0.3

    它将QT Creator的强大功能集成到了VS IDE中,使得习惯于使用VS的开发者无需切换到QT Creator也能高效地进行QT应用的开发。使用qt-vs-addin,开发者可以利用VS强大的调试工具、版本控制集成以及团队协作功能,同时...

    Linux-CentOS中redisCluster部署指南(redis-5.0.3)

    以下是对"Linux-CentOS中redisCluster部署指南(redis-5.0.3)"的详细解释和相关知识点: 一、Redis Cluster简介 Redis Cluster是Redis官方提供的分布式解决方案,通过数据分片技术实现了数据的自动分发和容灾,支持...

    mysql-connector-java-5.0.3.zip

    在标题"mysql-connector-java-5.0.3.zip"中,我们可以推断出这是MySQL官方提供的Java驱动程序的一个版本,具体为5.0.3版。这个zip文件包含了必要的Java类库(JAR文件),使得Java开发者能够利用JDBC(Java Database ...

    UE5.0.3在win7中的可用DLL

    在探讨“UE5.0.3在win7中的可用DLL”这一主题时,我们需要了解一些基本概念和技术背景。Unreal Engine(简称UE)是由Epic Games开发的一款强大的游戏开发引擎,广泛应用于游戏制作、虚拟现实、影视特效等领域。UE5是...

Global site tag (gtag.js) - Google Analytics