Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mapview inside dialog

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));
                }
            });

I am loading map inside dialog by this due to which the map view is very slow map is loading but taking much time this is my layout in which i am defining 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" />
like image 313
antoniomerlin Avatar asked Mar 29 '16 11:03

antoniomerlin


2 Answers

1) Create one custom 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)Define that .xml file in java

if you want open dialog on button click. so write below code in button click event.

 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();
like image 95
Viveka Patel Avatar answered Nov 07 '22 09:11

Viveka Patel


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

Not support getMap but using getMapAsync, this is my code

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();
like image 43
mysecond name Avatar answered Nov 07 '22 08:11

mysecond name