前回の続きで、
ストリートビュー未対応地域を想定した場合の説明です。
以下はサンプルソースです。
<!DOCTYPE html>
<html lang="ja" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script language="JavaScript">
function view_load(){
//都庁のストリートビューを表示してみます
var latlng = new google.maps.LatLng(35.690551, 139.69257);
//ストリートビューを表示
var street = new google.maps.StreetViewService();
street.getPanoramaByLocation(latlng, 50, callbackStreet);
}
function callbackStreet(results, status){
if(status == google.maps.StreetViewStatus.OK){
var latlng = results.location.latLng;
//ストリートビューを表示
var viewOptions = {
position:latlng,
pov: {
heading: 190,
pitch: 30,
zoom: 0
}
};
var view = new google.maps.StreetViewPanorama(document.getElementById("street_view"), viewOptions);
view.setVisible(true);
}else if(status == google.maps.StreetViewStatus.ZERO_RESULTS){
alert("こちらのエリアはストリートビューに対応していません。\n[ステータス:" + status + "]");
}else{
alert("ストリートビューを正常に取得できませんでした。\n[ステータス:" + status + "]");
}
}
</script>
</head>
<body onload="view_load();">
<div id="street_view" style="width:450px;height:350px;"></div>
</body>
</html>
試しに、
var latlng = new google.maps.LatLng(35.690551, 139.69257);
の部分をストリートビュー未対応地域の緯度・経度に変更してみてください。
ポップアップで
こちらのエリアはストリートビューに対応していません。[ステータス:ZERO_RESULTS]
と表示されるはずです。
やっていることはというと、
getPanoramaByLocation()に
コールバック関数(このサンプルだと「callbackStreet」)を設定してやり、
この関数に渡されたステータスをチェックしているだけです。
因みに、
getPanoramaByLocation()メソッドは引数に
座標、検索対象の半径(メートル単位)、コールバック関数を取ります。
※https://developers.google.com/maps/documentation/javascript/services?hl=ja
を参考にしてください。
あと、
取得できるステータスは以下になるようです。
■OK :リクエストは正常に実行されました。
■UNKNOWN_ERROR :リクエストを正常に処理できませんでした。失敗の正確な理由は不明です。
■ZERO_RESULTS :付近にパノラマがありません。
こんな感じで調べながらやっていけば、
ストリートビューの設定も何とかなるはずです。
この記事へのコメントはありません。