【问题标题】:gmaps.js - How to filter markers using select?gmaps.js - 如何使用选择过滤标记?
【发布时间】:2013-03-24 15:34:33
【问题描述】:

我可以使用 Google Maps JS 过滤没有 gmaps.js 的标记。但是,下面的代码不能与 gmaps.js 一起使用。错误声明:changeMap 不是函数。我的业余JS水平无法弄清楚。有什么想法吗?

我当前使用 gmaps.js 的 JS 不正确

$(document).ready(function(){
var layer;
var tableid = 2796050;
var map = new GMaps({
el: '#map_canvas',
lat: 33.68906,
lng: -78.886694,
zoom: 11
});
infoWindow = new google.maps.InfoWindow({});
map.loadFromFusionTables({
query: {
select: '\'Location\'',
from: '1LNKdPBYZOlszyjQqzUhoqsQXVdkyQ7pP2o2ft9o'
},
suppressInfoWindows: false,
events: {
click: function(point){
infoWindow.setPosition(point.latLng);
}
}
});
// problem area
function changeMap() {
var searchString = document.getElementById('search-string').value.replace(/'/g, "\\'");
if(!searchString) {
layer.setQuery("SELECT 'Latitude' FROM " + tableid);
return;
}
layer.setQuery("SELECT 'Latitude' FROM " + tableid + " WHERE 'Category' = '" + searchString + "'");
}
});

HTML

<!-- HTML -->
<form>
<label>Category </label>
<select id="search-string" onchange="changeMap(this.value);">
<option value="">All Places</option>
<option value="Attractions">Attractions</option>
<option value="Dining">Dining</option>
<option value="Shopping">Shopping</option>
<option value="Services">Services</option>
</select>
</form>

【问题讨论】:

    标签: jquery google-maps google-fusion-tables gmaps.js


    【解决方案1】:

    要使这个工作,您需要在 HTML 位之前添加 &lt;script&gt; 块。

    既然您无论如何都在使用 jQuery,请考虑编写一个事件而不是 changeMap 函数。首先,从select 中删除onchange 属性。并改变这个:

    function changeMap() {
        var searchString = document.getElementById('search-string').value.replace(/'/g, "\\'");
        if(!searchString) {
            layer.setQuery("SELECT 'Latitude' FROM " + tableid);
            return;
        }
        layer.setQuery("SELECT 'Latitude' FROM " + tableid + " WHERE 'Category' = '" + searchString + "'");
    }
    

    ...到这个:

    $('#search-string').change( function() {
        var searchString = document.getElementById('search-string').value.replace(/'/g, "\\'");
        if(!searchString) {
            layer.setQuery("SELECT 'Latitude' FROM " + tableid);
            return;
        }
        layer.setQuery("SELECT 'Latitude' FROM " + tableid + " WHERE 'Category' = '" + searchString + "'");
    })
    

    更多信息:http://api.jquery.com/change/

    【讨论】:

    • 感谢您的帮助,萨尔曼,但在添加您的建议后,选择仍然没有过滤掉标记。 [链接]jsfiddle.net/djmtype/Bbzdh/5我认为该功能需要以与工具提示相同的方式实现。有任何想法吗?抱歉,JS 不是我的第一语言,也不是第二或第三语言。
    • 我认为您的代码的某些部分可能会丢失。你在哪里初始化layer
    猜你喜欢
    • 1970-01-01
    • 2016-11-28
    • 2014-04-14
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    相关资源
    最近更新 更多