Mapview里面的对话框

时间:2016-03-29 11:14:17

标签: android google-maps android-mapview

MapView sch_map = (MapView) dialog.findViewById(R.id.schedule_map);
            sch_map.onCreate(savedInstanceState);

            sch_map.getMapAsync(new OnMapReadyCallback() {
                @Override
                public void onMapReady(final GoogleMap googleMap) {
                    LatLng sydney = new LatLng(-33.867, 151.206);
                    googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
                }
            });

我正在加载对话框中的地图,因为地图视图是非常慢的地图正在加载但是花了很多时间这是我在我定义mapview的布局。

<com.google.android.gms.maps.MapView
    android:layout_width="match_parent"
    android:layout_height="300dp"
    map:uiRotateGestures="true"
    map:uiScrollGestures="true"
    map:uiTiltGestures="true"
    map:uiZoomControls="true"
    map:uiZoomGestures="true"
    map:liteMode="true"
    android:id="@+id/schedule_map" />

2 个答案:

答案 0 :(得分:13)

1)创建一个自定义dialogmap.xml

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <com.google.android.gms.maps.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        style="@style/MyMaterialTheme.Base">

    </com.google.android.gms.maps.MapView>
</RelativeLayout>

2)在java中定义.xml文件

如果要在按钮单击时打开对话框。所以在按钮点击事件中写下面的代码。

 Dialog dialog = new Dialog(getActivity());
 dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
 dialog.setContentView(R.layout.dialogmap);
 dialog.show();
 GoogleMap googleMap;


 MapView mMapView = (MapView) dialog.findViewById(R.id.mapView);
 MapsInitializer.initialize(getActivity());          

mMapView = (MapView) dialog.findViewById(R.id.mapView);
mMapView.onCreate(dialog.onSaveInstanceState());
mMapView.onResume();// needed to get the map to display immediately
googleMap = mMapView.getMap();

答案 1 :(得分:7)

'Com.google.android.gms:play-services-maps:9.2.0'

不支持getMap,但使用getMapAsync,这是我的代码

final Dialog dialog = new Dialog(getActivity());

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    /////make map clear
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

dialog.setContentView(R.layout.dialogmap);////your custom content  

MapView mMapView = (MapView) dialog.findViewById(R.id.mapView);
MapsInitializer.initialize(getActivity());

mMapView.onCreate(dialog.onSaveInstanceState());
mMapView.onResume();


    mMapView.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(final GoogleMap googleMap) {
            LatLng posisiabsen = new LatLng(lat, lng); ////your lat lng
            googleMap.addMarker(new MarkerOptions().position(posisiabsen).title("Yout title"));
            googleMap.moveCamera(CameraUpdateFactory.newLatLng(posisiabsen));
            googleMap.getUiSettings().setZoomControlsEnabled(true);
            googleMap.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);
        }
    });


Button dialogButton = (Button) dialog.findViewById(R.id.btn_tutup);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        dialog.dismiss();
    }
});

dialog.show();