问答
客服(同微信)
15320418221

如何在google map中处理大量标记原创

2021-09-23 17:42

想吃糖的木子小

想吃糖的木子小

候,使Google Map标记是很平常的。但是一旦你有几百个、甚至更多地标的时候,性能迅速的开始降低。在本文章中,我会告诉你一些提高性能的方法。同时我会放一个测试页面去比较它们的效率。 如果你是第一次使用Google Map的标记,我建议你先去了解一下在Google Map上使用标记的一些基本原理和操作。The Marker Manager-Keeps track of them您的第一选择可能是利用MarkerManager,因为它是一个由谷歌提供的实用工具库。首先要将标记添加到MarkerManager,而不是使用GMap
2.addOverlay()逐个的将每一个Marker添加到Map。MarkerManager会不断你所有的标记。通过定义几个不同的zoom-levels,将可能会同时出现的Marker集合放在同一level上,避免在同一时间大量的Marker同时显示。MarkerManager 最初比直接加入到地图中有些慢,但是这样添加的好处是你可以更好的控制它们。使用addMarker(GMarker, minZoom, maxZoom?)将标记添加到MarkerManager,这个方法携带三个参数,第一个是你要添加的标记,后两个参数是可选的,但是界定了在什么level上这个标记是可见的。A simple example//Create a new mapvar map=new GMap2(document.getElementById('map'));map.setCenter(new GLatLng(5
9.5,1
4.0),6);//Create a new instance of the MarkerManagervar mgr = new MarkerManager(map);// Create a new marker var marker = new GMarker(new GLatLng(5
9.0, 1
3.80)); // Add marker to the MarkerManager mgr.addMarker(marker);明显的,没有谁会想MarkerManager添加单一的标记,但是如果你有几百个标记,那么可能就要这么做了。Bulk adding the markers使用MarkerManager更高效的办法是,首先将所有标记添加到一个数组中,然后用addMarkers(markerArray, minZoom, maxZoom?)将这个数组添加到MarkerManager。// Create a new instance of the MarkerManager var mgr = new MarkerManager(map); // Create marker array var markers = []; // Loop to create markers and adding them to the MarkerManager for(var i = 0; i < 50; i += 0.1) { var marker = new GMarker(new GLatLng(5
9.0 + i, 1
3.80 + i)); markers.push(marker); } // Add the array to the MarkerManager mgr.addMarkers(markers); // Refresh the MarkerManager to make the markers appear on the map mgr.refresh();请注意,在将存有标记数组添加到MarkerManager之后,必须调用mgr.refresh()。在逐个添加Marker的时候是不需要的。附加方法removeMarker(marker)从MarkerManager中移除一个标记。clearMarkers()移除所有标记。getMarkerCount(zoom)返回在指定的zoom-level下的标记个数。MarkerManager是Google提供的一个实用工具库。从下面的链接你可以源代码以及说明和例子。Google Maps MarkerManager SVN:链接 Light - Markers on a diet(高亮标记-首都标记)Google的Pamela Fox 为减少复杂标记,从而提高效率的MarkerLight制作了一个简单的程序。这样做的代价是,真的仅仅是在地图上显示一个图片,但你不能与之交互。如果你不需要与程序交互,那么这种办法真的是一种简单的提高性能的办法,这样做唯一的区别就是你创建的是一个MarkerLight,而不是一个GMarker。作者Pamelas后来解释了为什么这种方法会提高效率:GMarker之所以耗时这么长是因为它实际上是由多个DOM元素构成-前景,阴影,打印版本,可点击区域等。如果你的目的只是显示,那么你可以选择象MarkerLight那样创建一个带有背景URL的DIV那样去创建一个GOverlay的扩展(或者背景颜色、甚至更好的)------Pamela Fox以下是如何使用它:map.addOverlay(new MarkerLight(latlng, {image: "red_dot.png"}));red_dot.png这个图片是用于marker中的。这是最小最简单的一个。你可以尝试在Pamelas test page上用不同数量的标记测试效率。Download markerlight.Using Marker Light in combination with MarkerManager-结合MarkerManager使用Marker Light用MarkerManager的集中式添加MarkerLight的好处很多,而且真的很简单,只是将二者结合起来。mgr.addMarker(new MarkerLight(latlng, {image: "red_dot.png"}));这样做的原因是你可以显示在不同缩放级别下不同数量的标记。这种方式可以确保不会有太多的标记在同一时间显示。Clusterer - Only show what you need另一种方法是使用ACME实验室群集Clusterer。这是一个第三方库,提供了更快捷的方式加入标记。它是在BSD许可证下发布,并免费提供。只需要做两件事情,效率会更快:
1.只有当前可见的标记会被建立。
2.如果有太多的标记需要显示,那么它们会组合在一起成为群集标记。 这会让你的地图上即使有成千上万个标记依然能保持良好的性能。我的测试表明,这种方法的效率要显著快于使用MarkerManager的方式。以下是如何使用它: // Create a Clusterer object var clusterer = new Clusterer(map); // Create marker var marker = new GMarker(new GLatLng(5
7.8, 1
4.0)); // Add marker to the map clusterer.AddMarker(marker, 'text to infobox'); 调用clusterer.RemoveMarker(marker)方法来从Map中移除标记。另外还有一些方法来改变标志的行为。
1. clusterer.SetIcon(GIcon) 改变簇的图标
2. clusterer.SetMaxVisibleMarkers(n) 设置标记最多可见的数量门限,默认值是150.
3. clusterer.SetMinMarkersPerCluster(n)为一个标记集合设置最少的标记数,默认值是
5.
4. clusterer.SetMaxLinesPerInfoBox(n)设置信息框内文本的最大行数,默认值是
10.Download Clusterer
2.ClusterMarker - Chunk 'em all upClusterMarker是一个根据GNU通用公共许可证发布的免费javascript库,可以集中添加标记。这个库的独特行在于它会自动检测标记,彼此相交和集成为一个标记群集。

2021-09-23 19:05:34

相关问答

如何在GOOGLE地图上标注自己?

wakawaka

wakawaka

你注册google地图,然后,有一个给你填,你填好地址后,google会给这个地址发信。然后,你输入信里的验证码,就OK了。

2021-09-23 17:40:38 1139查看 1回答

请问,如何在google地图标注中出现我的公司?

居然重复注册了

居然重复注册了

这个可以教你链接

2021-09-23 17:41:18 589查看 1回答

如何在电子地图上大量标注信息?

水晶果子

水晶果子

谷歌地图支持这个功能

2021-09-23 17:41:34 843查看 1回答

如何在Google map 上标注地名啊

王宁

王宁

歌站(链接),注册一号果有的话,直接登陆内就可以了。二、容登录后会自动进入本地商户中心的内容添加页面,请按照步骤填写:必填信息>类别>营业时间与付款方式>照片>自定义>验证。三、全部填写完毕后会自动跳转到本地商户中心管理页面,选择验证方式,通过...

2021-09-23 17:42:33 549查看 3回答

google map怎么实现点击地图上的标记,显示出一张该地点的图片?

大米

大米

不太熟悉网页编程,但是kml文件中本身可以用代码添加相片和说明吧

2021-09-23 17:42:45 595查看 3回答

请问下 在google map上怎么添加多个坐标标记

月石迷城

月石迷城

链接很全的!

2021-09-23 17:42:45 520查看 2回答

google map添加自定义的标记,怎么在地图上不能显示了?

魔叉诗人-老时

魔叉诗人-老时

谁让你写绝对路径啊myicon.image="F:\tubioao\mmg.png";改成你的网站发布路径

2021-09-23 17:42:45 494查看 2回答

如何在google map中处理大量标记原创

想吃糖的木子小

想吃糖的木子小

候,使GoogleMap标记是很平常的。但是一旦你有几百个、甚至更多地标的时候,性能迅速的开始降低。在本文章中,我会告诉你一些提高性能的方法。同时我会放一个测试页面去比较它们的效率。如果你是第一次使用GoogleMap的标记,我建议你先去了解一下在Googl...

2021-09-23 17:42:45 510查看 2回答

请问如何在google earth里添加地标?

Without You

Without You

首先,进入GoogleEarthCommunity主页后,点“Newuser”创建一个新用户,这个创建方法和一般中文论坛创建用户的方法很类似,填写表单,选中“IAgree”后点Submit就可以创建成功。然后,打开GoogleEarth,然后在自己的地标上点右键,再...

2021-09-23 17:43:13 697查看 2回答

更多问答

最新知识

公司地址认领搜狗地图标注多久审核?公司地址认领地图标注多久审核?

公司地址认领搜狗地图标注多久审核?公司地址认领地图标注多久审核?

小编为您整理我在地图上标注审核认领需要多久、我在地图上标注审核认领需要多久y、我在地图上标注审核认领需要多久i、我在地图上标注审核认领需要多久Y、搜狗地图标注要多久才显示相关地图标注知识,详情可查看下方正文!

2023-01-17

公司地址如何入驻花小猪打车地图标记?指路人地图标注服务中心铺如何入驻花小猪打车地图标记?

公司地址如何入驻花小猪打车地图标记?指路人地图标注服务中心铺如何入驻花小猪打车地图标记?

小编为您整理美团商家如何入驻,商家入驻教程、商家如何入驻地图、如何入驻地:、养殖营业执照如何入驻地图、家政公司如何入驻美团相关地图标注知识,详情可查看下方正文!

2023-01-17

门指路人地图标注服务中心如何做花小猪打车地图位置标记?门指路人地图标注服务中心花小猪打车地图位置地址标记?

门指路人地图标注服务中心如何做花小猪打车地图位置标记?门指路人地图标注服务中心花小猪打车地图位置地址标记?

小编为您整理如何做地图标记、地图如何做标记、so搜街景中如何做标记、360e启花贷款申请通过了是要去到门指路人地图标注服务中心办理手续的吗、哪些软件能实现在地图上标记门指路人地图标注服务中心位置相关地图标注知识,详情可查看下方正文!

2023-01-17

门指路人地图标注服务中心地图位置地址标记?门指路人地图标注服务中心苹果地图位置地址标记?

门指路人地图标注服务中心地图位置地址标记?门指路人地图标注服务中心苹果地图位置地址标记?

小编为您整理哪些软件能实现在地图上标记门指路人地图标注服务中心位置、门指路人地图标注服务中心地址标注、如何创建门指路人地图标注服务中心定位地址、如何创建门指路人地图标注服务中心定位地址、服装门指路人地图标注服务中心地址标注上地图怎么弄相关地图标注知识,详情可查看下方正文!

2023-01-17

凯立德地图位置定位怎么设置自己的指路人地图标注服务中心名?凯立德地图位置定位怎么设置公司地址?

凯立德地图位置定位怎么设置自己的指路人地图标注服务中心名?凯立德地图位置定位怎么设置公司地址?

小编为您整理凯立德怎么定位自己的位置啊、手机凯立德地图定位怎么设置往上走、地图位置定位怎么设置自己的指路人地图标注服务中心名、凯立德手机版如何定位自己的位置,求助、凯立德导航怎么设置指路人地图标注服务中心铺招牌相关地图标注知识,详情可查看下方正文!

2023-01-17