开发者

IE throws errors parsing data for GoogleMap

I have added map displaying some elements with specific geo position using Google.API. In modern browsers everything works fine, but IE7/8 as always has some problems. When trying to center map using lat/long parameters of each element I'm getting error stating , that 'lat' is "empty or not an object" in line var pos_lat = parseFloat(data_map[i]['lat']);. Still marker is added in the proper place using the same data. Anyone had this kind of problem ?

<script type='text/javascript'> 
    var map;   

    var mapStart = function(){
        if(GBrowserIsCompatible()){
            map = new GMap2(document.getElementById("map"));
            map.setCenter(new GLatLng(51.961869,19.134521),6);
            map.addControl(new GLargeMapControl());

            var icon1 = new GIcon();
            icon1.image = "/static/images/map_icon_1.png";
            icon1.iconSize = new GSize(36, 30);
            icon1.infoWindowAnchor = new GPoint(16,16);
            icon1.iconAnchor = new GPoint(16,16);
            var data_map = [{'url': '/bo/properties/property/7/', 'lat': '52.1898985', 'long': '20.8461914', 'name': 'asdfgh'},]       
            mapa.enableDoubleClickZoom();
            mapa.enableContinuousZoom();
            var bounds = new GLatLngBounds();
            var maxlng =0;
            var maxlat=0;
            var minlng=0;
            var minlat=0;
            var positions=0;
            var zoom = 0;
            for (var i=0; i < data_map.length; i++开发者_C百科){
                var pos_lat = parseFloat(data_map[i]['lat']);
                var pos_lon = parseFloat(data_map[i]['long']);
                if(!isNaN(pos_lat) && !isNaN(pos_lon)){
                    positions = 1;
                    zoom++;
                    addMarker(pos_lat, pos_lon,{icon:icon1});
                    if (pos_lat < minlat || minlat==0){ minlat = pos_lat}
                    if (pos_lat > maxlat || maxlat==0){ maxlat = pos_lat}
                    if (pos_lon < minlng || minlng==0){minlng = pos_lon}
                        if (pos_lon > maxlng || maxlng==0){maxlng = pos_lon}
                    lat = minlat + (( maxlat - minlat)/2);
                    lng = minlng + (( maxlng - minlng)/2);
                    var allpoints = new GLatLng(lat,lng);
                    bounds.extend(allpoints);
                }
            }

            if(positions){
                if(zoom > 2){
                    mapa.setZoom(map.getBoundsZoomLevel(bounds)-2);
                }
                else{
                    map.setZoom(10);
                }
                map.setCenter(bounds.getCenter());            
            }
        }
    }

    var addMarker = function(lat, lon, options){
        point = new GLatLng(lat,lon);
        var marker = new GMarker(point, options);

        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(info_box_html);
        });

        map.addOverlay(marker);
    }

    $(document).ready(function(){
        mapStart();
    });   
    window.onunload = function (){ GUnload()};
</script>


var data_map = [{'url': '/bo/properties/property/7/', 'lat': '52.1898985', 'long': '20.8461914', 'name': 'asdfgh'},]

There is an extra comma at the end of array. Also try to use data_map[i].lat instead of data_map[i]['lat']

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜