包括Google动态地图

时间:2015-02-12 23:09:53

标签: javascript php google-maps google-maps-api-3

我需要一些帮助,因为我试图用PHP回调JavaScript函数。我创建了2个完美协作的类。在利用Google API的第一个中,我提取用户在我的表单上选择的城市的纬度和经度,然后我将这些值传递给第二个类,该类利用另一个API来显示该城市的天气预报服务。

我也希望添加Google地图,以此方式创建一个更完整的服务,显示所选城市的动态地图。

我注意到Firebug浏览器无法正确解析对象$ map的两个提到的属性,因为您可以自己轻松查看。 我真的不知道如何在标签内回调js功能,我需要达到我的目的。

我在这里使用PHP的简单回声在这里不起作用。

希望有人可以帮助我。 这是my page

这是我的代码中无效的代码:

        /**
         * Check for the real existence of the city, using the 
         * property $status of the instanced GeoLocalization class, here the object $map.
         * This class exploits a Google API.
         */
         if ( isset($missing) && empty($missing) && strlen($citta) > 1 && $map->status == 'OK' )
            {    
                /**
                * Use some properties of the object $map to show my user 
                * the chosen city and state in Italian.
                * Show even the latitude and the longitudine.
                * These values are those passed to the GeoWeather class.
                */  

                // show the location                
                echo '<ul id="display_location">' . 
                        '<li class="rosso centra sottolineato grassetto">' . $map->formatted_address . '</li>' .
                        '<li>' . 'Latitudine: ' . $map->latitude . '</li>' .
                        '<li>' . 'Longitudine: '  . $map->longitude . '</li>' .
                      </ul>';

               echo '<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>';                

               echo '<script type="text/javascript">
                        var map;
                        function initialize() {
                            var mapOptions = {
                            zoom: 8,
                            center: new google.maps.LatLng(<?php echo $map->latitude . ", "  . $map->longitude; ?>)
                            };
                        map = new google.maps.Map(document.getElementById("googleStaticMap"), mapOptions);
                        }
                    </script>';

                echo '<script type="text/javascript">initialize();</script>';

                echo '<div id="googleStaticMap"></div>'; 
            }
  </body>

1 个答案:

答案 0 :(得分:0)

您无法在PHP块中启动新的PHP块。

此:

       echo '<script type="text/javascript">
                var map;
                function initialize() {
                    var mapOptions = {
                    zoom: 8,
                    center: new google.maps.LatLng(<?php echo $map->latitude . ", "  . $map->longitude; ?>)
                    };
                map = new google.maps.Map(document.getElementById("googleStaticMap"), mapOptions);
                }
            </script>';

应该是:

           echo '<script type="text/javascript">
                    var map;
                    function initialize() {
                        var mapOptions = {
                        zoom: 8,
                        center: new google.maps.LatLng('. $map->latitude . ','  
                                                        . $map->longitude .')
                        };
                    map = new google.maps.Map(document.getElementById("googleStaticMap"), 
                                              mapOptions);
                    }
                </script>';

其他问题:

你必须切换这两行的顺序(否则调用该函数时#googleStaticMap是未知的):

            echo '<script type="text/javascript">initialize();</script>';

            echo '<div id="googleStaticMap"></div>';

<强> Additionaly:

#googleStaticMap目前没有高度。您已将高度设置为100%,但只要#googleStaticMap的父元素没有通过CSS设置高度,就不会产生任何影响。