要在StreetViewPanoramaView中长按获取纬度和经度,可以使用以下步骤:
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback;
import com.google.android.gms.maps.StreetViewPanorama;
import com.google.android.gms.maps.StreetViewPanoramaView;
import com.google.android.gms.maps.model.LatLng;
public class MainActivity extends AppCompatActivity implements OnStreetViewPanoramaReadyCallback {
private StreetViewPanoramaView streetViewPanoramaView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
streetViewPanoramaView = findViewById(R.id.streetviewpanorama);
streetViewPanoramaView.onCreate(savedInstanceState);
streetViewPanoramaView.getStreetViewPanoramaAsync(this);
}
@Override
public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) {
streetViewPanorama.setOnStreetViewPanoramaClickListener(new StreetViewPanorama.OnStreetViewPanoramaClickListener() {
@Override
public void onStreetViewPanoramaClick(StreetViewPanoramaOrientation orientation) {
LatLng latLng = streetViewPanorama.getLocation().position;
double latitude = latLng.latitude;
double longitude = latLng.longitude;
// 在这里处理获取到的纬度和经度
}
});
}
@Override
protected void onResume() {
super.onResume();
streetViewPanoramaView.onResume();
}
@Override
protected void onPause() {
super.onPause();
streetViewPanoramaView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
streetViewPanoramaView.onDestroy();
}
}
这段代码中,我们通过实现OnStreetViewPanoramaReadyCallback接口,将StreetViewPanoramaView与StreetViewPanorama关联起来。然后,在onStreetViewPanoramaReady方法中,我们设置StreetViewPanorama的长按监听器,并在监听器中获取到当前位置的纬度和经度。
记得在AndroidManifest.xml文件中添加相关权限和Google Maps API密钥:
在代码中的YOUR_API_KEY处替换为你自己的Google Maps API密钥。
这样,当用户在StreetViewPanoramaView上长按时,就会触发监听器,并获取到相应的纬度和经度信息。