2011-03-09 6 views
0

Google.API를 사용하여 특정 위치 정보가있는 일부 요소를 표시하는지도를 추가했습니다. 최신 브라우저에서는 모든 것이 정상적으로 작동하지만 IE7/8은 항상 문제가 있습니다. 각 요소의 위도/경도 매개 변수를 사용하여 맵을 가운데 정렬하려고 할 때 'lat'이 "비어 있거나 객체가 아닙니다"라는 오류가 발생합니다 (라인 var pos_lat = parseFloat(data_map[i]['lat']);). 스틸 마커는 동일한 데이터를 사용하여 적절한 위치에 추가됩니다. 누구나 이런 종류의 문제가 있었습니까?IE가 GoogleMap의 데이터 구문 분석 오류를 던졌습니다.

<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++){ 
       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> 

답변

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

어레이의 끝에 추가 쉼표있다. 또한 배열의 끝에 가짜 요소를 추가하므로 확실히 IE를 여행한다 대신 data_map[i]['lat']

+0

후행 쉼표의 data_map[i].lat를 사용하려고 ...하지만 나는'.lat를 사용하는 것이이 시나리오에서 생각하지 않는다 '또는'[lat ']'*는 속성에 액세스하려고 할 때 차이를 만들어야합니다. – scunliffe

관련 문제