无法读取null(googlemaps)的属性 - 即使我确保页面已加载

时间:2013-03-21 11:57:43

标签: javascript google-maps

我有一个谷歌地图的脚本,它在预定的坐标上呈现我的地图,使用搜索中的标记数组中的信息来呈现具有当前用户信息的信息框等,但我有一个奇怪的问题。地图在大部分时间里工作得很好,但是经常(特别是最后两天)。我得到了错误:“无法读取null的属性”。据我所知,从阅读其他线程时,问题可能是在尝试添加地图(或getelementbyId)之前尚未创建包含地图的div,这就是我添加domlistener以确保页面已加载的原因。知道问题可能在哪里?因为我现在不知所措:(

<script type="text/javascript">
function initialize() {
    var markers = <?php echo json_encode($markers); ?>;

    var myLatLng = new google.maps.LatLng( <?= $search->area_coords; ?> );

    var mapOptions = {
        center:myLatLng,
        zoom:12,
        maxZoom:14,
        mapTypeId:google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
            mapOptions);

    // Custom MarkerImage - To be designed
    // var markerImage = 'images/markerImage.png';

    var iconBase = 'http://www.googlemapsmarkers.com/v1/H/0099FF/';

    var infowindow = new google.maps.InfoWindow({
        maxWidth:150
    });

    for (i = 0; i < markers.length; i++) {

        // Array to contain all the markers for clickevents etc.
        var markersArray = [];
        var position = new google.maps.LatLng(markers[i]['lat'], markers[i]['long']);
        var contentString = '<div class="marker_info"><div class="float_left"><img height="40" width="40" src="' + markers[i]['picture'] + '"></div>' +
                '<div><a href="profile.php?userid=' + markers[i]['id'] + '">' + markers[i]['title'] +
                '</a></div><br><em>' + markers[i]['price'] + ' pounds</em></div>';

        var marker = new google.maps.Marker({
            position:position,
            map:map,
            icon:iconBase,
            htmlCode:contentString
        });

        google.maps.event.addListener(marker, 'click', function () {
            infowindow.setContent(this.htmlCode);
            infowindow.open(map, this);
        });
        markersArray.push(marker);
    }
}

google.maps.event.addDomListener(window, "load", initialize);

错误消息给出了行号246,如果它正确检查它,请参考:

 var myLatLng = new google.maps.LatLng( <?= $search->area_coords; ?> ); 
  • 但我不是百分之百,因为浏览器可能会以不同的方式阅读文档,或者我在这里错了吗?

map_canvas div是在标准100左右创建的(我不能在这里显示HTML,但它只是普通的div):

 <div class="map" id="map_canvas">
    <!-- DIV that contains the Map of users -->
 </div>

0 个答案:

没有答案