我有一个视图片段中的两个地图(见下面的截图),虽然地图运行正常,我可以通过getMapAsync()访问一个地图,但我无法理解如何运行另一个getMapAsync()并将其与第一个区分开来。谷歌地图Android API - 两个地图与getMapAsync()
两个地图合作得很好:
一个相当简单的视图布局(称为 “fragment_map.xml”):
<com.google.android.gms.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<android.support.v7.widget.CardView
android:id="@+id/map_card"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp">
<com.google.android.gms.maps.MapView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/miniMap"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="0dp"
android:layout_marginTop="0dp" />
</android.support.v7.widget.CardView>
在活动(或片段在我的情况) :
private MapView mv, miniMap;
private GoogleMap gm;
private View myLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
myLayout = inflater.inflate(R.layout.fragment_map, container, false);
mv = (MapView) myLayout.findViewById(R.id.mapview);
mv.onCreate(savedInstanceState);
miniMap = (MapView) myLayout.findViewById(R.id.miniMap);
miniMap.onCreate(savedInstanceState);
mv.getMapAsync(this);
miniMap.getMapAsync(this);
return myLayout;
}
@Override
public void onMapReady(GoogleMap map) {
gm = map;
gm.setMyLocationEnabled(true);
gm.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
gm.animateCamera(CameraUpdateFactory.newLatLng(position.target));
}
});
}
该地图正确充气和everythin摹工程进展顺利,但你可以猜测,无论我做“的GoogleMap GM”恰好都映射由于
mv.getMapAsync(this);
miniMap.getMapAsync(this);
都指向一个
@Override
public void onMapReady(GoogleMap map) {
任何想法,我怎么能为每个MapView附加一个单独的GoogleMap?
编辑:
感谢Zeeshan Shabbir我用了一个布尔值,第一目标主图,然后初始化迷你地图:
private GoogleMap gm;
private View myLayout;
private boolean miniMapReady = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
myLayout = inflater.inflate(R.layout.fragment_map, container, false);
mv = (MapView) myLayout.findViewById(R.id.mapview);
mv.onCreate(savedInstanceState);
miniMap = (MapView) myLayout.findViewById(R.id.miniMap);
miniMap.onCreate(savedInstanceState);
mv.getMapAsync(this);
return myLayout;
}
@Override
public void onMapReady(GoogleMap map) {
if (!miniMapReady) {
gm = map;
gm.setMyLocationEnabled(true);
miniMap.getMapAsync(this);
miniMapReady = true;
} else {
miniGm = map;
}
gm.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
miniGm.animateCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(position.target, position.zoom - 5.0f, position.tilt, position.bearing)));
}
});
}
的ChangeCamera监听这里允许迷你地图在主地图上跟踪用户的互动,同时保持较低的缩放级别。
你可以为此设置一个布尔值。 –
你能多解释一下吗?我没有看到那导致... – Feedslant