我想在我的主页上显示谷歌地图。此映射由此函数生成:
function addressCode(id,concatenadoAMostrarEnMapa) {
var geocoder;
var map;
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-35.397, -60.644);
var mapOptions = {
zoom: 5,
center: latlng
}
map = new google.maps.Map(document.getElementById(id), mapOptions);
var address = concatenadoAMostrarEnMapa;
geocoder.geocode( {
'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
google.maps.event.addDomListener(window, 'load',addressCode);
}
此功能在主页面中定义。然后使用ajax,我调用php文件take_publications
,在这个文件中我打印下面的代码:
$comillas='"' ;
echo " <div id='$mapa'";
echo "onload='addressCode('$mapa','$concatenadoAMostrarEnMapa')' style='position:relative; width:400px; height:400px;'> </div>";
echo "<script >addressCode('$mapa','$concatenadoAMostrarEnMapa');";
echo "setInterval(";
echo $comillas."addressCode('$mapa','$concatenadoAMostrarEnMapa')".$comillas;
echo ", 10000 );
</script >";
$mapa
是一个带有id
标签的字符串,该变量在函数addressCode
中用作参数。 $concatenadoAMostrarEnMapa
是在函数addressCode
中用作参数的地址。
问题是地图没有加载,或者更确切地说,ajax从php文件打印的脚本没有被执行。
知道发生了什么事吗?
提前致谢!
答案 0 :(得分:0)
我没有确切的答案,但您可以将此代码用于您的网站..
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script>
function initialize() {
var map_canvas = document.getElementById('map_canvas');
var map_options = {
center: new google.maps.LatLng(24.376202, 92.163641),
zoom: 18,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(map_canvas, map_options)
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map_canvas"></div>
答案 1 :(得分:0)
首先,div
元素没有onload
个事件。
如果您真的希望在加载时执行脚本,请在addressCode
事件处理程序中添加window.onload
调用,如下所示:
window.onload = function(){
//do anything here
};
然后,关于setInterval
的使用,如果你不需要IE&lt; 10个用户看到你的网站,你可以这样做:
setInterval(addressCode, 1000, "#yourmap", "nohablospanishenoughtounderstandthat");
否则,你应该这样做:
setInterval(function(){ addressCode("#yourmap","blabla"); }, 1000);
(请注意,我不支持使用setInterval
,您最好使用setTimeout
)
最后,停止使用register_globals助手。它永远不会帮助你。永远都不会。
"<div id='$mapa'"
应该是:
"div id='".$mapa."'"
毕竟,您的代码应该如下所示:
echo "<div id='".$mapa."'";
echo "style='position:relative; width:400px; height:400px;'></div>";
echo "<script>";
echo "window.onload = function(){ ";
echo "addressCode('".$mapa."','".$concatenadoAMostrarEnMapa."');";
echo "setInterval(";
echo "addressCode, 1000, '".$mapa."','".$concatenadoAMostrarEnMapa."'";
echo ");";
echo "};";
echo "</script >";
答案 2 :(得分:0)
整夜搜索后,我找到了解决方案。我不得不评估ajax带来的所有scritps,因为我插入了新的scritps,但页面已经加载了所有内容。
谢谢!