2014-12-22 3 views
0

단일 핀으로지도 유형의 Google 차트 시각화를 만들고 있습니다.Google 시각화를위한 zoomLevel 매개 변수가 작동하지 않습니다.

How to set zoomLevel in google Visualization Map api?에 따르면 줌 확대 레벨을 제어하기 위해 zoomLevel 옵션을 사용할 수 있어야합니다. 그러나, 나를 위해,이 (코드) 실패 : 당신이 볼 수 있듯이

<html> 
    <head> 
    <script type="text/javascript" src="https://www.google.com/jsapi"></script> 
    <script type="text/javascript"> 
     google.load("visualization", "1", {packages:["map"]}); 
     google.setOnLoadCallback(drawChart); 
     function drawChart() { 
     var data = google.visualization.arrayToDataTable([ 
      ['Lat', 'Long', 'Name'], 
      [12, 77, 'Random location nearby'], 
     ]); 

     var map = new google.visualization.Map(document.getElementById('map_div')); 
     map.draw(data, {showTip: true, zoomLevel: 10, mapType: "normal"}); 
     } 

    </script> 
    </head> 

    <body> 
    <h1>Drop Point Map</h1> <hr /> 
    <div id="map_div" style="width: 99%; height: 85%"></div> 
    </body> 
</html> 

, zoomLevel: 10가 설정되어있는,하지만 난 줌 레벨에 운,이없는 최대 줌 레벨 (19)

기본값

내가 누락 된 부분에 대한 아이디어가 있으십니까?

소스는 문서화 된대로 작동하지 않는 것처럼 fiddle demonstrating issue

답변

1

이 보이는

Visualization: Map - Google Charts — Google Developers에서 가져옵니다. 아마도 관련 issue in the issue tracker. 다음 드롭에서 수정 될 예정 버그로 확인 된

:

working fiddle

: (가), 두 번째지도를 그리는 그 문제에 따라, 해결 방법으로 https://code.google.com/p/google-visualization-api-issues/issues/detail?id=747

가 작동하는 것 같다

setTimeout(function() { 
    map.draw(data, { 
     showTip: true, 
     zoomLevel: 10, 
     mapType: "normal" 
    }); 
}, 500); 

: (단지 반 두 번째는 다음지도를 다시 그리기 지연하는) 예이 추가 그 Dr.Molle이 the question to which you refer에 게시 주위에 (그가 "책임"을 나타냅니다로) 353,210

는 또한 문서화되지 않은 작업을 사용할 수 있습니다.

타이밍 문제가 있습니다. 지도가 렌더링을 마칠 때까지 확대/축소 세트를 지연해야합니다.

google.load("visualization", "1", { 
    packages: ["map"] 
}); 
google.setOnLoadCallback(drawChart); 

function drawChart() { 
    google.visualization.Map.prototype.getMap = function() { 
     for (var k in this) { 
      if (this[k].constructor == google.maps.Map) return this[k]; 
     } 
    } 
    var data = google.visualization.arrayToDataTable([ 
     ['Lat', 'Long', 'Name'], 
     [12, 77, 'Random location nearby'] 
    ]); 

    var map = new google.visualization.Map(document.getElementById('map_div')); 
    map.draw(data, { 
     showTip: true, 
     zoomLevel: 10, 
     mapType: "normal" 
    }); 
    setTimeout(function() { 
     console.log(map.getMap().getZoom() + ":" + map.getMap().getCenter()); 
     map.getMap().setZoom(12); 
    }, 500); 
} 

proof of concept fiddle

코드 :

google.load("visualization", "1", { 
 
    packages: ["map"] 
 
}); 
 
google.setOnLoadCallback(drawChart); 
 

 
function drawChart() { 
 
    google.visualization.Map.prototype.getMap = function() { 
 
    for (var k in this) { 
 
     if (this[k].constructor == google.maps.Map) return this[k]; 
 
    } 
 
    } 
 
    var data = google.visualization.arrayToDataTable([ 
 
    ['Lat', 'Long', 'Name'], 
 
    [12, 77, 'Random location nearby'] 
 
    ]); 
 

 
    var map = new google.visualization.Map(document.getElementById('map_div')); 
 
    map.draw(data, { 
 
    showTip: true, 
 
    zoomLevel: 10, 
 
    mapType: "normal" 
 
    }); 
 
    google.maps.event.addListenerOnce(map.getMap(), 'idle', function() { 
 
    console.log(map.getMap().getZoom() + ":" + map.getMap().getCenter()); 
 
    map.getMap().setZoom(12); 
 
    }); 
 
}
html, 
 
body, 
 
#map_div { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://www.google.com/jsapi"></script> 
 
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<h1>Drop Point Map</h1> 
 
<hr /> 
 
<div id="map_div" style="width: 99%; height: 85%"></div>

관련 문제