このような質問が少なくともいくつかあることは知っています
Googleマップのストリートビュー静止画像の「画像がありません」の検出
Google の Streetview Image API が「申し訳ありませんが、ここに画像がありません」(つまり NULL) という結果を返すかどうかを確認するにはどうすればよいですか?
これらの記事では、いくつかのソリューションを提供しています。ここと Google 検索で見た中で最も人気のある 2 つは次のとおりです。
- 画像のサイズを検出して、Google Static Image API から「適切な」画像を取得したかどうかを判断する
- getPanoramaByLocation サービスを呼び出して、その場所でストリートビューを利用できるかどうかを判断します
残念ながら、最初の解決策はハックのように感じられるので使用したくありません。また、2 番目の解決策は必ずしもうまくいくとは限りません。
var center = new google.maps.LatLng(latitude, longitude);
var streetViewService = new google.maps.StreetViewService();
var maxDistanceFromCenter = 75; //meters
streetViewService.getPanoramaByLocation(center, maxDistanceFromCenter, function (streetViewPanoramaData, status) {
if (status === google.maps.StreetViewStatus.OK) {
var key = /**smarty** #mapKey# **smarty**/;
var url = 'http://maps.googleapis.com/maps/api/streetview?size=320x320&location=' + latitude + ',%20' + longitude + '&sensor=false&key=' + key;
jQuery('.ui-page-active .streetView').attr('src', url);
} else {
console.log('error calling street view');
}
});
};
このコードは、ある場所でパノラマ画像を利用できるかどうかを正しく判断しますが、まったく同じ場所で静的画像を利用できない場合があります。
getPanoramaByLocation の半径を 100 から始めましたが、これは安全な数値のように思えましたが、その後、「申し訳ありませんが、ここには画像がありません」というエラーが発生するケースが見つかりました。だから私は 75 歳になりましたが、今度は 50 歳にならなければなりません。
getPanoramaByLocation は、静的なストリートビュー画像が利用可能であることを示す安全な指標ではないようです。または、そうかもしれませんが、使用する必要のある半径には特定の値があります。私はドキュメントでそれを見つけることができません。私の質問: maxDistanceFromCenter に使用する最も安全な半径は?