をロードした後、私はジャバスクリプトについての基本的な何かが欠けていると思います。私はあなたの助けを使うことができました!チェックGoogleマップが
シナリオ:「検索」をクリックすると、Googleマップが読み込まれます。それは負荷として、チェックボックスが(Yelpのと同様に)「マップが移動したときの結果をやり直し」、言うこと表示されます。地図をドラッグまたはズームすると、結果が更新されます。その部分は正常に動作します。
問題:たとえredo()
が結果を更新しているので、(真または偽)checkbox
の値が時にマップがロードredo()
機能によって認識され、それがその後再びそれをチェックしません(そうではありません地図を再読み込みします)。したがって、チェックボックスを切り替えると、「やり直し」機能に気付かれません!
簡体コード:
//HAML
%input{:type => "checkbox", :id => "followCheck", :name => "followCheck", :onclick => 'handleClick();'}
//load the map
function showLocations() {
map = new google.maps.Map(document.getElementById("map_canvas"), {
bunch of map stuff;
map.fitBounds(bounds);
redo(); //this is the redo function, see below
}
}
function handleClick(checkbox) {
var chk = document.getElementById("followCheck").checked;
console.log("checkbox value is currently " + chk);
return chk;
}
function redo() {
var chk = handleClick();
console.log("inside redo, value is " + chk);
if (chk == true) {
google.maps.event.addListener(map, 'mouseup', function() {
mapAdjusted = 1;
updateMapAfterUserInteraction();
});
google.maps.event.addListener(map, 'zoom_changed', function() {
mapAdjusted = 1;
updateMapAfterUserInteraction();
});
}
}
(ノート、そのリドゥ()関数は、私よりも賢く、現在、町の外で私の協力者によって書かれました。)
ので、Redo()
ロードマップがロードされたとき。チェックボックスがtrueの場合、マップロードは、その後、redo()
機能はzoom/drag
を処理するとき。しかし、それはまださえ値をfalseに変更した後にそれをしない(と、ページのロード時に値がfalseの場合、反対が起こります)。
は、値が変更されたことを確認するためにredo()
を取得するために何が必要ですか? push()
? bind()
? get/set? change()
? addEventListener()
?チェックボックスがトグルされるとき、私は(私はむしろないと思います)のマップをリロードする必要がありますか?全く新しいアプローチ?私は立ち往生している!ありがとう。私はJQueryのアイディアも公開しています。