0

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>
4

1 に答える 1

0

<script>これを機能させるには、HTML のビットの前にブロックを追加する必要があります。

とにかくjQueryを使用しているので、関数の代わりにイベントを書くことを検討してくださいchangeMaponchangeまず、から属性を削除しますselect。そしてこれを変更します:

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/

于 2013-03-24T17:55:31.130 に答える