我正在使用谷歌地图Android SDK,我试图找出街景全景是否可用是某个位置。
描述该功能:“如果用户点击地图标记并且该位置具有全景图,则显示全景图,否则只需将地图缩放到标记位置)
如果位置没有全景图,我宁愿不创建SupportStreetViewPanoramaFragment。 即使我创建它,我认为唯一可行的方法是调用setOnStreetViewPanoramaChangeListener,然后调用setPosition并检查侦听器上的全景ID ... 由于某些原因,听众没有被叫,但我还没有尝试解决它,因为无论如何它感觉太麻烦了。
这里有优雅的解决方案吗?
我也希望(坚持)避免在此链接后调用JavaScript API v3:https://developers.google.com/maps/documentation/javascript/reference#StreetViewService
var latLng = new google.maps.LatLng(lat, lon);
streetViewService.getPanoramaByLocation(latLng, STREETVIEW_MAX_DISTANCE, function (streetViewPanoramaData, status) {
if (status === google.maps.StreetViewStatus.OK) {
//ok
} else {
//no ok
}
});
答案 0 :(得分:0)
简单易用
@Override
public void onStreetViewPanoramaReady(final StreetViewPanorama streetViewPanorama) {
streetView = streetViewPanorama;
streetViewPanorama.setOnStreetViewPanoramaChangeListener(new StreetViewPanorama.OnStreetViewPanoramaChangeListener() {
@Override
public void onStreetViewPanoramaChange(StreetViewPanoramaLocation streetViewPanoramaLocation) {
if (streetViewPanoramaLocation != null && streetViewPanoramaLocation.links != null) {
streetView = streetViewPanorama;
streetViewPanorama.setPosition(new LatLng(36.0579667, -112.1430996));
StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder()
.bearing(180)
.build();
streetViewPanorama.animateTo(camera, 100);
} else {
Toast.makeText(StreetView_Panorama.this, "location not available", Toast.LENGTH_SHORT).show();
}
}
});
}
答案 1 :(得分:0)
您可以使用街景元数据。如果它返回标记位置的pano_id,则应该不错。使用它需要一个API密钥,但不使用任何积分。 另一方面,当Google今年早些时候更改其云价格时,StreetView全景图的使用成本变得非常昂贵。因此,除非您肯定要使用它,否则不要实例化它。
https://developers.google.com/maps/documentation/streetview/metadata