相信它与否,我很少不得不处理JavaScript Google地图API,直到最近。上周我必须使用从地址列表中的HTML元素中的标记和信息泡沫创建一个交互式地图。谷歌地图API更好地介绍了什么。这些jquery类’S肯定不是那里最强大的插件,但我认为这可能是一个坚实的基础,让你们想要超越文章的范围。

使用这2个插件,您将能够创建一个地图,添加标记,将信息泡沫链接到它们,从CSS类元素中过滤一列地址并将其链接到地图。

下载源代码 查看演示

谷歌地图jQuery类

当然,您想要做的第一件事就是创建地图。为此,您必须链接所有文件并实例化类。

<script src="http://maps.google.com/maps/api/js?sensor=true" type="text/javascript"><!--mce:0--></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"><!--mce:1--></script>
<script src="js/helperGoogleMap.js" type="text/javascript"><!--mce:2--></script>
 
$(document).ready(function() {
 var usamap = new HelperGoogleMap({
		"container"	:"gMap",   // HTML Id of the map container
		"zoom"		: 4,   // Map Zoom Level
		"center"	: new google.maps.LatLng(39.639538, -97.470703), // Map starting position in latitude and Longitude
		"mapTypeId"	: google.maps.MapTypeId.SATELLITE // Type of map: SATELLITE, ROADMAP, HYBRID, TERRAIN
 });
});

到目前为止,您应该有一个指向美国的地图。现在我们想添加与他们联系的标记和气泡!

var addresses = { "markers" : [
		{"title":"This is bubble text1", "address" : "1 Learjet Way, Wichita, KS, United States"},
		{"title":"This is bubble text2", "address" : "1 Croton Point Avenue, Croton On Hudson, NY, United States"}
	]}
usamap.AddMarkers(addresses)

标题将推到信息泡沫中,您也可以将HTML标记放在那里。至于地址,发生了一点魔法。你可以’t直接发送地址到地图上并获取一个标记,您需要使用Google Call,Geocoder,获得经度和纬度,然后将它们推到地图之后。可选择地直接使用此模式后的纬度和经度:

var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var myLatlng2 = new google.maps.LatLng(-25.363882,131.044922);
 
var addresses = { "markers" : [
		{"title":"This is title 1", "address" : myLatlng },
		{"title":"This is title 2", "address" : myLatlng2}
	]}
usamap.AddMarkers(addresses)

那’S,每次调用添加adkers时,课程都会删除所有标记,您可以获得一个干净的地图。

下载源代码 查看演示

HTML列表过滤类

该类将基于CSS类过滤一列元素列表’s每个都有并将它们与当前选择的选择选项进行比较。
让’s实例化课程:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>
<script src="js/helperListFilter.js" type="text/javascript"></script>
 
$(document).ready(function() {
	var stateFilter = new HelperListFilter({
		"container"	:".sitesListing",  // Filter everything in this container
		"sorting"	:".sort",  // filter every elements with this class
		"filter" 	:['#filter','#state']  // HTML id of the select that will be filtering (you can have as much filter as you want)
	})

该类还暴露了在过滤列表时触发的自定义事件,您可以使用这种方式:

$(document).bind("listFiltered", function() {   ...   })

如果您希望其中一个选项选择一切,请将值放到“all”。在您的列表中,您要在Li标签上添加关联类:

<li class="sort california water"><strong>Los Angeles</strong></li>

在这种情况下,班级“sort”课程对李进行分类,它将比较加州和水的选定选项。

那’嗯!它现在将在onchange事件上自动筛选。

下载源代码 查看演示

终于

当然,您需要将2个插件链接在一起,这在此处在index.html中完成:

	usamap.getAddress = function(){
		var saveAddr = [];
		$(".getMap").each(function(){    // get every sorted items
			if($(this).css("display") != "none"){ // Are they visible?
				var title= $(this).find("a").html();  // create json to add markers
				var addr = $(this).find(".listaddress").html();
				var json = {"title":title, "address" : addr}
				saveAddr.push(json)
			}
		})
		var addresses = { "markers" :saveAddr}
		usamap.AddMarkers(addresses)   // Add markers
	}
	usamap.getAddress();
	$(document).bind("listFiltered", function() {	usamap.getAddress()		}) // exposed custom event in the filtering class

在这里,你走了,希望你喜欢它!

测试:
Firefox 3+
Internet Asproder 6+
Safari 4+

如果您喜欢并使用此脚本,请考虑为我买啤酒’廉价和一种简单的方法来回馈!





广告

下载 teskking 000-081. 学习指南 tesking jn0-331. 视频演示,了解使用jQuery功能如何提高您的网站可用性。成为专家开发商 tesking 642-426. Web开发课程。

12 thoughts on “使用jQuery创建一个互动谷歌地图小部件

  1. I’m使用此插件无法遇到问题
    Firebug回归“google.maps.maptypeid未定义”在助手的第17行…

  2. 伟大的插件!

    我想知道你是否知道使用复选框而不是选择/选项表单–或者真的是两者的组合。一世’ve试图给出输入’s id’在StateFilter对象中引用的S,但这并不是’似乎产生了结果我’m looking for.

    任何想法都会得到很大欣赏。

  3. 凉爽的!一世’很高兴找到这个网站ðÿ™,
    P.S.像Larf2k一样,我会尝试(成功,我希望)用复选框!

  4. 康复愉快。

    刚刚过于好奇,而不是将所有地图位置作为HTML中的列表项,而不是在HTML中的列表项,而是可以将它们从外部XML文件中拉入呢?

    谢谢你的时间。

  5. 有关如何使此地图交互式的任何想法,以便用户可以将位置添加到所需的标记类别(持续审核),请求编辑位置,或标记错误/不适当的位置,具有可以自动发送给主持人的注释?谢谢你的酷演示。

  6. 很好!如果我希望在命中提交按钮后出现结果,请解释我要做什么,而映射中的气泡无论如何都会被选项过滤?
    谢谢你,
    再次,好工作!

评论被关闭。