2014-03-25 16 views
0

我正在搜索在我的主页中显示谷歌地图。此地图由此功能生成:通过php文件使用ajax拍摄谷歌地图

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

首先,div元素没有onload事件。

如果你真要上载执行脚本,添加您的电话addressCodewindow.onload事件处理程序,如下所示:

window.onload = function(){ 
    //do anything here 
}; 

接着,关于使用setInterval,如果你不需要IE < 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 >"; 
+0

感谢您的解释!我将应用它,我是网页开发新手。 我试图使用你的代码,但它不worl:/ –

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> 
+0

根据你的选择改变经度和纬度 – user2991245

+0

如果你只有一张地图可以显示,那么这段代码很有用,但是我有一张要显示的地图列表。 –

+0

我有一个疑问 - 每次通话都会有差异或相同的经历? – user2991245

0

后一直在寻找了一整夜,我找到了解决办法。我必须评估ajax带来的所有垃圾邮件,因为我插入了新垃圾邮件,但该页面已经加载了所有内容。

谢谢!