Google Fusion Tables API v1 を使用して、JSON 形式のフュージョン テーブルにロードされたポイント kml をリクエストしています。私はこのリクエストを使用します:
<script src="https://www.googleapis.com/fusiontables/v1/query?sql=SELECT * FROM 1CNJWjLDYgBkJGZVslJ67Fak4DyqadEFIabzQ60&callback=dataHandler&key=AIzaSyKBzv-rs32Zat-8fDZuWwOXo7hCtpBR78"></script>
コールバック関数は、GeoJSON to Google Maps Utilityを使用して、リクエストからマーカーを解析します。ジオメトリ データは、「geometry」という名前の列 idx 2 にあります。
function dataHandler(results) {
var rows = results['rows'];
for (var i in rows){
var geometries = rows[i][2]['geometry'];
//alert(geometries.coordinates)
if (geometries) {
var options = {
"icon": "http://labs.google.com/ridefinder/images/mm_20_red.png"
};
var overlay = new GeoJSON(geometries, options);
if (overlay.error){
alert("error in GeoJSON")
}else{
alert(map) // return undefined
overlay.setMap(map); //not working
}
}else {
alert('No geometry column')
}
}
}
GeoJSON ユーティリティで作成した JSON やオーバーレイにエラーはありませんが、グローバルに定義されている場合でも、Google マップの var "map" は関数内で未定義です。そのため、overlay.setMap(map) が機能していません。var マップが定義される前に、コールバック関数が呼び出されると思います。この問題を解決するにはどうすればよいですか?