我正在使用Google Maps Android SDK,我正在尝试找出某个位置是否有可用的StreetView全景图。
描述该功能:“如果用户单击地图标记,并且该位置具有全景图,则显示全景图,否则仅将地图缩放到标记位置。)
如果位置没有全景图,我宁愿不创建SupportStreetViewPanoramaFragment。即使我创建了它,我认为唯一可能的方法是调用setOnStreetViewPanoramaChangeListener,然后调用setPosition并检查侦听器上的全景id……由于某种原因,侦听器没有被调用,但我还没有尝试修复它,因为它感觉太麻烦了。
这里有什么优雅的解决方案吗?
我也希望(坚持)避免使用这个链接调用JavaScript接口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
}
});发布于 2018-11-08 14:59:16
简单易用
@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();
}
}
});
}发布于 2018-11-24 07:41:40
您可以使用街景元数据。如果它为您的标记位置返回一个pano_id,那么您应该是好的。使用它需要一个API密钥,但它不使用任何信用。另一方面,当谷歌在今年早些时候改变了他们的云定价时,StreetView panorama的使用变得超级昂贵。所以,不要实例化一个,除非你确定要使用它。
https://developers.google.com/maps/documentation/streetview/metadata
https://stackoverflow.com/questions/23909623
复制相似问题