0

早上好,

我的一位前同事创建了一个应用程序,您可以在其中通过邮政编码进行搜索,然后在 5-40 公里半径范围内的地图(谷歌地图)上放置标记。

这些位置是距您要查找的邮政编码 40 公里半径范围内的商店。该功能本身仍在工作,只有带有信息的信息窗口不再工作。

我有几个使用此应用程序运行的网站,但对于所有网站,信息窗口都不再工作。会不会是谷歌自己在api做了调整,我也需要在某个地方进行调整?

这是我的同事放在一起的代码,没有任何改变,但它不再起作用了......这里有人知道这个问题,因为我无法弄清楚自己......

    <script type="text/javascript">
                        var geocoder;
                        var map;
                        function initialize() {
                            geocoder = new google.maps.Geocoder();
                            var myOptions = {
                                zoom: <?php
                                if(is_array($postcodevelden) && count($postcodevelden) > 0 && !empty($_POST['address']))
                                {
                                    switch($radius)
                                    {
                                        case "5":
                                            echo "12";
                                            break;
                                        case "10":
                                            echo "11";
                                            break;
                                        case "15":
                                        case "20":
                                            echo "10";
                                            break;
                                        case "30":
                                        case "40":
                                            echo "9";
                                            break;
                                    }
                                }
                                else
                                {
                                    echo "7";
                                }
                                ?>,
                                center: new google.maps.LatLng(<?php if(is_array($postcodevelden) && count($postcodevelden) > 0) { echo $lat.", ".$lon; } else { echo "52.2008737173322, 5.25146484375"; } ?>),
                                mapTypeId: google.maps.MapTypeId.ROADMAP
                            }
                            map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

<?php
        if(is_array($adressen) AND count($adressen) > 0) 
        {
            foreach($adressen as $adres)
            {
                $afstand = round((6371 * acos(sin(deg2rad($lat)) * sin(deg2rad($adres->locatie_lat)) + cos(deg2rad($lat)) * cos(deg2rad($adres->locatie_lat)) * cos(deg2rad($adres->locatie_lon) - (deg2rad($lon))))), 2);
?>
                            addMarker(<?php echo $adres->locatie_lat.", ".$adres->locatie_lon.", '".$adres->locatie_naam."', '".$adres->locatie_straat."', '".$adres->locatie_postcode."', '".$adres->locatie_plaats."', '".$adres->locatie_telefoon."', '".$afstand."'"; ?>);
<?php
            }
        }
?>
                        }

                        var infowindow = new google.maps.InfoWindow();

                        function addMarker(lat, lon, naam, straat, postcode, plaats, telefoon, afstand)
                        {
                            var marker = new google.maps.Marker({
                                position: new google.maps.LatLng(lat, lon),
                                map: map,
                                icon: "images/pincard/wheel-icon.png",
                                title: naam
                            });

                            google.maps.event.addListener(marker, 'mouseover', function() {
                                var contentString = '<div>'+
                                '<b style="border-bottom: 1px solid #000000;">' + naam + '</b><br/>'+
                                'Afstand (hemelsbreed): ' + afstand + ' km<br/>' +
                                straat + '<br/>' +
                                postcode + ' ' + plaats + '<br/>';
                                if(telefoon != "")
                                {
                                    contentString = contentString + 'Telefoonnr: ' + telefoon;
                                }
                                contentString = contentString + '</div>';
                                infowindow.content = contentString;
                                infowindow.open(map, marker);
                            });

                            google.maps.event.addListener(marker, 'mouseout', function(){
                                infowindow.close(map);
                            });
                        }

                        google.maps.event.addDomListener(window, 'load', initialize);
                    </script>

我这样调用api:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

如果有人知道为什么所有网站的信息窗口停止工作,那么我很想听听,因为我不明白为什么它不再工作。

提前感谢您的任何努力

亲切的问候,

乔普

PS:这是一个网站,例如:

轮胎间...php?lang=nl&p=4

4

1 回答 1

3

我被同样的问题所困扰,并去谷歌搜索答案。

找到了我的问题的答案——看起来谷歌可能已经收紧了它的 infoWindow API 有点强迫你通过适当的 Set() 函数设置 .content 成员。

换线试试

infowindow.content = contentString;

infowindow.setContent(contentString);

看看是否有帮助。我用我的代码做到了这一点,并修复了破损。

于 2012-12-14T19:53:13.523 回答