我正在一個網站中嘗試使用Google地圖。該頁面使用php從數據庫中獲取值。然後它將其中一個列值傳遞給一個javascript函數,該函數使用Google Maps進行繪製。現在,我想要在單個地圖中顯示所有值的圖表。全局變量javascript無法正常工作
我附加了javascript函數和php調用。這裏是代碼:
<script type="text/javascript">
var myOptions;
var map;
var geocoder;
var first_call = 0;
function map_function(addr){
// Define the addresses we want to map.
var clubs = addr;
// Create a new Geocoder
if (first_call == 0){
var geocoder = new google.maps.Geocoder();
}
// Locate the address using the Geocoder.
geocoder.geocode({ "address": clubs }, function(results, status) {
// If the Geocoding was successful
if (status == google.maps.GeocoderStatus.OK) {
if (first_call == 0){
// Create a Google Map at the latitude/longitude returned by the Geocoder.
// Create Once
alert("Initializing Map");
var myOptions = {
zoom: 16,
center: results[0].geometry.location,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
//Initialise once
var map = new google.maps.Map(document.getElementById("map"), myOptions);
}
// Add a marker at the address.
alert("Plotting address");
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
try {
console.error("Geocode was not successful for the following reason: " + status);
} catch(e) {}
}
});
first_call = first_call + 1;
alert (first_call);
}
</script>
<?php
while($row = mysqli_fetch_array($result)){
$addr = $row['ADDRESS'];
echo '<script type="text/javascript">map_function("{$addr}");</script>';
?>
我知道地圖及其選項應該只初始化一次。所以我使用first_call跟蹤函數調用,並確保地圖僅在第一次調用時被初始化。此外,我將地圖,選項和地理編碼聲明爲全局變量。不幸的是,我沒有得到任何輸出。我真的很新的JavaScript,我不知道我哪裏錯了。
焦急等待解決方案。
可能很多不同的問題:
下面是我的測試代碼更改代碼,而PHP。這是一個。刪除此行中的'var' var geocoder = new google.maps.Geocoder();'以便引用全局變量,而不是創建新的臨時局部變量。 – jfriend00
第二個問題。 「map」變量同樣存在問題。 – jfriend00
第三個問題。您在'map_function()'函數的末尾添加一個'first_call',但是在地理編碼操作完成之前發生。您應該在地理編碼完成回調函數內增加該變量。 – jfriend00