2013-03-24 37 views
0

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

我现在用gmaps.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> 

回答

0

对于这个工作不正确JS,你需要的HTML数据之前添加<script>块。

既然您正在使用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/

+0

感谢您的帮助,萨尔曼,但加入您的建议后,选择仍然不过滤出标记。 [链接] http://jsfiddle.net/djmtype/Bbzdh/5/我认为该功能需要以与工具提示相同的方式实施。有任何想法吗?对不起,JS不是我的第一语言,也不是第二或第三。 – user1848144 2013-03-25 23:22:29

+0

我认为你的代码的一部分可能会丢失。你在哪里初始化'layer'? – Salman 2013-03-26 09:46:19