ブラウザは、GoogleChromeです。
JavaScriptを使って、JSONPを読み取ろうとしています。(外部サイトで逆ジオコーディングサービスを受けようとしています。)
一番下に記載のスクリプトにおいて、function run によって、TextBox1には値 ”139.6917064”、TextBox2には値"35.6894875",TextBox3には合成されたurl
"http://www42.nskint.co.jp/ReverseGeocoding/revgeo?lat=35.6894875&lng=139.6917064&limit=1&callback=getjyusyoo"
が表示されることまで確認しています。また、function getjyusyoも呼び出されているようです。
このとき、返されるJSONP
getjyusyoo({ "gis": [
{ "pref_name": "東京都", "city_name": "新宿区", "street_name": "西新宿二丁目", "address": "8", "lat": 35.6895, "lng": 139.69164, "distance": 7.459045544, "type": 0 }
] })
から、textBox4に"東京都"、textBox5に"新宿区"と表示させたいのですが、pref や city は"undefined"となってしまいます。どのように書いたら良いでしょうか。
<script type="text/javascript">
function run() {
// 現在の位置情報を取得
navigator.geolocation.getCurrentPosition(
// 位置情報の取得に成功
function (pos) {
var locationlat = pos.coords.latitude;
var locationlon = pos.coords.longitude;
var result = document.getElementById('<%= TextBox1.ClientID%>');
result.value = locationlon;
var result = document.getElementById('<%= TextBox2.ClientID%>');
result.value = locationlat;
var url = 'http://www42.nskint.co.jp/ReverseGeocoding/revgeo' + '?lat=' + locationlat + '&lng=' + locationlon + '&limit=1&callback=getjyusyo';
var result = document.getElementById('<%=TextBox3.ClientID%>');
result.value = url;
var scr = document.createElement('script')
scr.type = 'text/javascript';
scr.src = url;
document.getElementsByTagName('body').item(0).appendChild(scr);
}
)
}
function getjyusyo(data) {
var pref = data.gis.pref_name;
var city = data.gis.city;
var result = document.getElementById('<%=TextBox4.ClientID%>');
result.value = pref;
var result = document.getElementById('<%=TextBox5.ClientID%>');
result.value = city;
}
</script>