Mapview inside dialog

11,906

Solution 1

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

Solution 2

'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();
Share:
11,906

Related videos on Youtube

antoniomerlin
Author by

antoniomerlin

Updated on September 27, 2022

Comments

  • antoniomerlin
    antoniomerlin over 1 year
    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" />
    
  • Piyush
    Piyush almost 8 years
    Are where are you?
  • asad.qazi
    asad.qazi over 7 years
    Thanks :) Saved me :P
  • Jaydip Kalkani
    Jaydip Kalkani about 6 years
    I have created mapview in dialog in same manner but i am facing a problem in it. My map is showing dark then normal. Please look at this question and reply me if you have any solution.
  • Olufsen
    Olufsen about 4 years
    Can you please provide the whole code because I do not understand how this works. Thank you