Google 地图 Android 片段内的 v2 缩放级别检测
Google Map Android v2 Zoom Level Detection Inside a Fragment
我正在尝试检测 Google 地图中的缩放级别。我的地图位于一个 Fragment 中,它扩展了另一个 Fragment.
我已经在 class 中实现了 OnCameraChangeListener。
这是我为检测缩放级别变化而编写的代码:
private float currentZoom = -1;
public GoogleMap.OnCameraChangeListener getCameraChangeListener()
{
return new GoogleMap.OnCameraChangeListener()
{
@Override
public void onCameraChange(CameraPosition position)
{
if(currentZoom != position.zoom)
{
currentZoom = position.zoom;
Context context = mContext;
CharSequence text = Float.toString(currentZoom);
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
};
}
// This is the Method that was created after Implementing the OnCameraChangeListener
@Override
public void onCameraChange(CameraPosition cameraPosition) {
getCameraChangeListener();
}
当我在Phone中打开应用程序并尝试放大或缩小时,没有任何反应。通常在阅读了有关缩放级别检测的其他问题的答案后,这就是我想出的代码。但是没用。
请告诉我如何让它工作。非常感谢。
将在 GoogleMap 对象的实例上设置 onCameraChangeListener。更多详情请见 http://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.html
您需要将 GoogleMap.OnCameraChangeListener
分配给您的 GoogleMap 实例。下面是一个示例代码,可能会帮助您找到执行此操作的方法:
public void prepareMap(){
mMapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
setupMap(googleMap);
}
});
}
private void setupMap(GoogleMap googleMap){
mMap = googleMap;
mMap.setOnCameraChangeListener(getCameraChangeListener());
}
public GoogleMap.OnCameraChangeListener getCameraChangeListener() {
return new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
if(currentZoom != position.zoom) {
currentZoom = position.zoom;
Context context = mContext;
CharSequence text = Float.toString(currentZoom);
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
};
}
我正在尝试检测 Google 地图中的缩放级别。我的地图位于一个 Fragment 中,它扩展了另一个 Fragment.
我已经在 class 中实现了 OnCameraChangeListener。
这是我为检测缩放级别变化而编写的代码:
private float currentZoom = -1;
public GoogleMap.OnCameraChangeListener getCameraChangeListener()
{
return new GoogleMap.OnCameraChangeListener()
{
@Override
public void onCameraChange(CameraPosition position)
{
if(currentZoom != position.zoom)
{
currentZoom = position.zoom;
Context context = mContext;
CharSequence text = Float.toString(currentZoom);
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
};
}
// This is the Method that was created after Implementing the OnCameraChangeListener
@Override
public void onCameraChange(CameraPosition cameraPosition) {
getCameraChangeListener();
}
当我在Phone中打开应用程序并尝试放大或缩小时,没有任何反应。通常在阅读了有关缩放级别检测的其他问题的答案后,这就是我想出的代码。但是没用。
请告诉我如何让它工作。非常感谢。
将在 GoogleMap 对象的实例上设置 onCameraChangeListener。更多详情请见 http://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.html
您需要将 GoogleMap.OnCameraChangeListener
分配给您的 GoogleMap 实例。下面是一个示例代码,可能会帮助您找到执行此操作的方法:
public void prepareMap(){
mMapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
setupMap(googleMap);
}
});
}
private void setupMap(GoogleMap googleMap){
mMap = googleMap;
mMap.setOnCameraChangeListener(getCameraChangeListener());
}
public GoogleMap.OnCameraChangeListener getCameraChangeListener() {
return new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
if(currentZoom != position.zoom) {
currentZoom = position.zoom;
Context context = mContext;
CharSequence text = Float.toString(currentZoom);
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
};
}