0

我正在尝试在 Google Maps V2 API 中获取地图中心的纬度和经度并获取地图的宽度和长度。

这是我的旧代码(来自我开始修改的 GMaps v1):

import com.google.android.gms.maps.GoogleMap;

private GoogleMap mGoogleMapView;

public LatLng getMapCenter()
{
  if( mGoogleMapView != null )
  {
     return mGoogleMapView.getMapCenter();
  }
  /*if( mOpenStreetMapView != null )
  {
     return convertOSMGeoPoint( mOpenStreetMapView.getMapCenter() );
  }*/
  return null;
}

public int getHeight()
{
  if( mGoogleMapView != null )
  {
     return mGoogleMapView.getHeight();
  }      
  /*if( mOpenStreetMapView != null )
  {
     return mOpenStreetMapView.getHeight();
  }*/
  return 0;
}

public int getWidth()
{
  if( mGoogleMapView != null )
  {
     return mGoogleMapView.getWidth();
  }
  /*else if( mOpenStreetMapView != null )
  {
     return mOpenStreetMapView.getWidth();
  }*/
  return 0;
} 

如何使用 Android GMaps V2 API 执行与 mapView.getMapCenter()、mapView.getHeight() 和 mapView.getWidth() 相同的功能?

4

1 回答 1

10

获取中心:

GoogleMap map;
LatLng center = map.getCameraPosition().target;

获取宽度和高度:

如果您要使用 a 添加MapFragmentActivityFragmentTransaction必须提供一些ViewGroup将片段放入其中。之类的东西LinearLayout。打电话getWidth()等等应该getHeight()可以ViewGroup得到你想要的。

希望能帮助到你。如果你需要一个例子,请告诉我。

编辑 - 添加一个例子:

看看Google Maps Android API v2,特别是在名为:添加片段的部分。

在以You can also add a MapFragment to an Activity in code开头的部分下,有一个示例。在那个例子中,R.id.my_container正是ViewGroup我上面写的。在您的 XML 布局中的某处Activity,有这样的内容:

<LinearLayout
    android:id="@+id/my_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

所做的FragmentTransaction是它需要 aMapFragment并将其作为 this 的子级LinearLayout。唯一的孩子。因此,地图的宽度和高度与LinearLayout.

然后你可以很容易地得到你需要的Activity东西。

LinearLayout myContainer = (LinearLayout) findViewById(R.id.my_container);
int mapHeight = myContainer.getHeight();
int mapWidth = myContainer.getWidth();

我希望这是可以理解的。

于 2013-05-02T23:52:31.260 回答