如何设置OnMapLoadedCallback GoogleMaps

时间:2015-04-11 20:53:25

标签: android google-maps

我想知道我加载到googlemap片段的所有内容何时加载了所有内容。这就是我的代码目前的样子

public class MainMapActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMapLoadedCallback {

GoogleMap map;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_map);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


    MapFragment mapFragment = (MapFragment) getFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
    //addLatestLocations();

   // TestVectorQuery();
}

@Override
public void onMapReady(GoogleMap map) {
    map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(
            new LatLng(32.0516, -78.925), 3));
    map.setOnMapLoadedCallback(this);
}

@Override
public void onMapLoaded() {
    //SetMapMarker(26.1333, 80.1500);
    //Whatever I want to do

}

<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    class="com.google.android.gms.maps.MapFragment"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

这似乎没有任何问题;但是,当我尝试在onMapLoaded()中执行某些操作时,没有任何反应,因此似乎没有正确设置回调。任何帮助,将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

您在com.google.android.gms.maps.MapFragment中使用原生片段(getFragmentManager())和FragmentActivity。这不起作用。将片段更改为SupportMapFragment并使用getSupportFragmentManager(),或将您的活动更改为从Activity继承。

答案 1 :(得分:0)

尝试使用支持片段,因为它适用于我。 下面是我的代码成功运行。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_map);

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
            .getMap();

    map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
        @Override
        public void onMapLoaded() {
            map.addMarker(new MarkerOptions()
                    .title("your title")
                    .snippet("your desc")
                    .position(new LatLng(-22.2323,-2.32323))
            );
        }
    });
}