将过滤条件应用于地图的最干净方法
Cleanest way to apply filter criteria to the map
>我有一个页面,其中包含一个Google Maps V3
映射和一个带有"过滤器"按钮的HTML表单。
我还有一个大的XML文件,它具有复杂的结构,其中包含有关每个标记的信息,我将在每个标记的信息框中解析为html。
我能够从 XML 文件中读取和生成标记并在地图上绘制它们,但我无法过滤地图上的标记。
按下"过滤"按钮后,在地图上过滤标记的最干净方法是什么,这将满足我在页面上的HTML表单指定的过滤条件?
到目前为止,我的表单有一个列表框:
Company
- 根据您选择的公司名称,它应该在地图上显示其所有分支机构。XML文件包含所有这些信息(分行地址,纬度,液化天然气,电话号码,它所属的公司)。
XML结构:
<markers>
<marker>
<company name="ComapnyName">
<branches>
<branch>
<address>BranchAddress</address>
<phone>BranchAddress</phone>
<products>
<product>
<name>ProductName</name>
<url>ProductURL</url>
</product>
<product />
<product />
...
</products>
</branch>
<branch />
<branch />
...
</branches>
</company>
</marker>
<marker />
<marker />
...
</markers>
实现您描述的过滤的直接方法是将标记放入Array
中,在过滤器设置更改时遍历Array
,然后关闭标记:
Marker.setMap( null );
或:
Marker.setMap( map );
如果您将筛选器视为切换,则可能需要创建一些状态变量来跟踪筛选器设置,以便还可以编写类似于以下内容的代码:
var filterOptionAbcIsOn = false;
function toggleFilters() {
if ( filterOptionAbcIsOn ) {
// loop across the Array and turn the markers off
filterOptionAbcIsOn = false;
}
else {
// loop across the Array and turn the associated markers on
filterOptionAbcIsOn = true;
}
}
相关文章:
- 为什么谷歌地图API's方法未从RequireJS中正确调用
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 谷歌地图的插值方法
- Javascript Ruby's类似地图的方法
- 谷歌地图javascript多个方法错误
- 如何在谷歌地图中设置多个信息窗口,但使用这种特定的JavaScript方法
- 无法调用方法'应用'关于为jquery谷歌地图插件设置方向的未定义
- 谷歌地图API v3 addDomListener方法问题
- 使用Knockout.js的数组方法将地图标记添加到Google地图
- 谷歌地图变量的范围和调用方法
- 在Javascript和EaselJS中使用3x3数组,偏移分块图块地图的最佳方法是什么
- 取消之前对谷歌地图地理编码方法的调用
- 谷歌地图 api v3,“对象 #<对象> 没有方法'setValues' 错误
- 将过滤条件应用于地图的最干净方法
- 销毁地图实例的正确方法是什么
- 在谷歌地图中使用getTile()函数的正确方法
- 使用错误的方法在地图上显示来自 JSON 的信息
- 谷歌地图街景.对象没有方法平移
- 谷歌地图API v3,不能调用未定义的方法“panTo”
- 有没有一种方法可以散列一个html dom元素,以便在地图中使用