私はこれが一般的な問題であることを知っていますが、私は見つめ、googledを読み、もう少し見つめましたが、何が悪いのかわかりません。
MySqlテーブルからマップにデータを入力し、UK Postcodeを逆ジオコーディングし、結果の周りに円を描きますが、クロージャ関数が機能しない理由を理解できません。
私が理解しているように、クロージャの原則は、関数で達成しようとしているループの範囲外から変数にアクセスすることですが、私の人生では、それを機能させることはできません。
誰かが私の明白なエラーに対する答えを持っていると確信しており、誰かが提供できる助けをいただければ幸いです。
var mapOptions = {
zoom : 8,
center : new google.maps.LatLng(37.09024, -95.712891),
mapTypeId : google.maps.MapTypeId.ROADMAP
};
var infowindow = new google.maps.InfoWindow({
content : contentString
});
var geocoder = new google.maps.Geocoder();
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
var contentString;
var i
downloadUrl("getXML.php", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
contentString =(name);
var postcode = markers[i].getAttribute("postcode");
var dateadded = markers[i].getAttribute("dateadded");
var extra = markers[i].getAttribute("extra");
geocoder.geocode({
'address' : postcode
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map : map,
clickable : true,
position : results[0].geometry.location
})
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(name );
infowindow.open(map, marker);
}
})(marker, i));
var circle = new google.maps.Circle({
map : map,
radius : 12070.99, // 15 miles in metres
fillColor : '#AA0000'
});
circle.bindTo('center', marker, 'position');
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
});