谷歌地图Api不加载

时间:2015-12-16 17:57:48

标签: javascript php jquery

我有home.php,标记头加载jquery另一页corpo_home.php:

<script type="text/javascript">
    function Loadcorpo(P1){
        $("#corpo").load("corpo_home.php?sq="+elecodice[P1]+"&an="+eleanno[P1]);
    }
</script>

On corpo_home.php我声明了api键和加载地图的功能:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=>123456&sensor=false"></script>
<script type="text/javascript">
    function initialize(P2){
        var coordinate = P2.split(',')
        alert("before");
        var latlng = new google.maps.LatLng(coordinate[0], coordinate[1]);
        alert("after");
        var mapOptions = {
            center: latlng,
            zoom: 17,
            mapTypeId: google.maps.MapTypeId.HYBRID
        };

        var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

        var marker = new google.maps.Marker({
            position: latlng,
            map: map,
            title:""
        });
    }
    });
</script>

当页面index.php加载时,我看到警告&#34;之前&#34;但不是&#34;&#34;。

你能帮助我吗?

2 个答案:

答案 0 :(得分:1)

我发现了很多语法错误:

  1. 分割后,没有;
  2. 由于某些原因,当只需要});时,您使用}关闭了该功能。
  3. marker变量在title:""});关闭,因此后面的大括号不应该在那里。
  4. 除此之外,我不明白为什么它不起作用。请显示您的来电地点initialize();

    现在,请改用此代码:

    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=>123456&sensor=false"></script>
    <script type="text/javascript">
    function initialize(lat, lng){ // edited on first edit
        alert("before");
    
        var LatLng = { // edited on first edit
            lat: lat,
            lng: lng
        };
    
        alert("after");
    
        var mapOptions = {
            center: latlng,
            zoom: 17,
            mapTypeId: google.maps.MapTypeId.HYBRID
        };
    
        var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);    
    
        var marker = new google.maps.Marker({
            position: latlng,
            map: map, 
            title: ""
        });
    }
    </script>
    

    - 编辑 -

    好的,所以你用这个来调用函数:

    <img onload="javascript:initialize('<?php echo $row_record['pzcoordi'];?>');"  src="images/blank.gif"/>
    

    首先,我会使用div代替img,但如果有效,那就没问题。我看到了传递参数然后在JavaScript上拆分的方法。很天才。但我看到你将参数作为字符串传递。这不起作用,因为API期望它们是整数。

    为了更好地诊断,我很想看看你是如何构建下一个和之前的按钮,因为它们工作正常,但我会继续我的猜测。

    我建议您传递2个参数,LatLng坐标,要实现这一点,您需要在PHP中explode();

    <?php
        $array = explode(",", $row_record['pzcoordi']);
        $lat = $array[0];
        $lng = $array[1];
    ?>
    <img onload="initialize(<?php echo $lat; ?>, <?php echo $lng; ?>)"  src="images/blank.gif"/>
    

    如果由于任何原因这不起作用,也许你可以用单引号包装参数来使它们成为字符串,但我不会依赖它。我知道explode();返回字符串,但它们只是HTML和PHP的字符串,JavaScript会将它们作为整数,因为它们不会用单引号括起来。我希望这会有所帮助。

答案 1 :(得分:0)

感谢您进行语法更正。

我用这种方式调用inizialize():

<img onload="javascript:initialize('<?php echo $row_record['pzcoordi'];?>');"  src="images/blank.gif" />

home.php上一个和下一个按钮,onclick corpo_home.php重新加载,从数据库读取坐标并显示地图。

第一个时间图没有加载,如果点击下一个按钮然后正确返回地图加载。