2

Google Maps API V3 を使用して複数のロケーション メーカーをロードする開発中のサイトがあります。次のエラーが原因で配列のループが失敗する IE7/8 を除いて、すべてが機能しています。

SCRIPT5007: Unable to get value of the property '5': object is null or undefined

StackOverflow に関する同様の質問をすべて調べましたが、解決策が見つかりません。

そのため、オブジェクト配列からデータにアクセスしようとしています (ネストされた配列も試しましたが、同じエラーが発生します)。私の配列は以下の通りです。また、問題が発生した場合に備えて html オブジェクトをドロップしようとしましたが、変更はありません - IE7/8 はまだオブジェクト値を取得できません。

var sites = [
    {title: "Hermitage Medical Clinic", latitude: 53.3593139774, longitude: -6.40494071541, enumerator: 1, html: "<div class=\"find_a_surgeon_info_inner\"><h4 style=\"margin: 0; padding: 0;\">Hermitage Medical Clinic</h4><p>Old Lucan Road, Dublin 20</p><p><a href=\"http://devel.pixelapes.com/iaps.ie/location/hermitage-medical-clinic/\">View hospital details</a></p></div>", iconTerm: "hospital" }
        ];

そして、これがデータにアクセスしようとしている私の関数です:

        function setMarkers(map, sites) {

            for (var i = 0; i < sites.length; i++) {
                // var sites = markers[i];
                var icon = '<?php bloginfo("template_url"); ?>/images/map-icons/' + sites[i].iconTerm + '.png';
                var siteLatLng = new google.maps.LatLng(sites[i].latitude, sites[i].longitude);
                var marker = new google.maps.Marker({
                    position: siteLatLng,
                    map: map,
                    icon: icon,
                    title: sites[i].title,
                    zIndex: sites[i].enumerator,
                    html: sites[i].html
                });

                var contentString = "Some content";

                google.maps.event.addListener(marker, "click", function () {
                    infowindow.setContent(this.html);
                    infowindow.open(map, this);
                });
            }
        }

また、iconTerm オブジェクトに特定の問題があった場合に備えて、デフォルトの Maps マーカーを使用するように戻そうとしましたが、IE7/8 は次のオブジェクト値を取得しようとして失敗しました。

これが発生しているページは次のとおりです。 http://devel.pixelapes.com/iaps.ie/surgeon/eamon-s-beausang/

奇妙なことに、map.fitBounds で境界を設定していない別のマップ インスタンスがあります。オブジェクト値の取得の失敗は引き続き発生しますが、マップの種類はロードされます (ただし、非常に面倒です): http://devel.pixelapes.com/iaps.ie/find-a-hospital-or-clinic/

単一の外科医ページで fitBounds 機能を削除しようとしましたが、「病院を探す」マップのようにマップがまだ部分的にロードされません。

これを回避する方法についてのアイデアはありますか?

4

2 に答える 2

7

sitesandの最後の項目の後に末尾のカンマがありlatlngsます。それらを削除してください。IE は、配列/オブジェクトの末尾のカンマを好みません。

于 2012-05-03T12:31:22.923 に答える
0

あなたの問題は、sites配列のメンバーに選択したプロパティ名の 1 つ (または複数) が IE で気に入らないことにあると思います。最初のコード セクションを次のように変更することをお勧めします。

var sites = [{
        "title": "Hermitage Medical Clinic",
        "latitude": 53.3593139774,
        "longitude": -6.40494071541,
        "enumerator": 1,
        "html": "<div class=\"find_a_surgeon_info_inner\"><h4 style=\"margin: 0; padding: 0;\">Hermitage Medical Clinic</h4><p>Old Lucan Road, Dublin 20</p><p><a href=\"http://devel.pixelapes.com/iaps.ie/location/hermitage-medical-clinic/\">View hospital details</a></p></div>",
        "iconTerm": "hospital"
}];
于 2012-05-03T14:46:01.280 に答える