diff --git a/java/com/android/incallui/calllocation/impl/AndroidManifest.xml b/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
index fda9404..3e5a6d0 100644
--- a/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
+++ b/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
@@ -19,6 +19,8 @@
   package="com.android.incallui.calllocation.impl">
 
   <application>
+    <!-- Fix for P -->
+    <uses-library android:name="org.apache.http.legacy" android:required="false" />
 
     <meta-data
       android:name="com.google.android.gms.version"
diff --git a/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java b/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java
deleted file mode 100644
index c7249e0..0000000
--- a/java/com/android/incallui/calllocation/impl/DownloadMapImageTask.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-import android.graphics.drawable.Drawable;
-import android.location.Location;
-import android.net.TrafficStats;
-import android.os.AsyncTask;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.constants.TrafficStatsTags;
-import com.android.incallui.calllocation.impl.LocationPresenter.LocationUi;
-import java.io.InputStream;
-import java.lang.ref.WeakReference;
-import java.net.URL;
-
-class DownloadMapImageTask extends AsyncTask<Location, Void, Drawable> {
-
-  private static final String STATIC_MAP_SRC_NAME = "src";
-
-  private final WeakReference<LocationUi> uiReference;
-
-  public DownloadMapImageTask(WeakReference<LocationUi> uiReference) {
-    this.uiReference = uiReference;
-  }
-
-  @Override
-  protected Drawable doInBackground(Location... locations) {
-    LocationUi ui = uiReference.get();
-    if (ui == null) {
-      return null;
-    }
-    if (locations == null || locations.length == 0) {
-      LogUtil.e("DownloadMapImageTask.doInBackground", "No location provided");
-      return null;
-    }
-
-    try {
-      URL mapUrl = new URL(LocationUrlBuilder.getStaticMapUrl(ui.getContext(), locations[0]));
-      TrafficStats.setThreadStatsTag(TrafficStatsTags.DOWNLOAD_LOCATION_MAP_TAG);
-      InputStream content = (InputStream) mapUrl.getContent();
-
-      return Drawable.createFromStream(content, STATIC_MAP_SRC_NAME);
-    } catch (Exception ex) {
-      LogUtil.e("DownloadMapImageTask.doInBackground", "Exception!!!", ex);
-      return null;
-    } finally {
-      TrafficStats.clearThreadStatsTag();
-    }
-  }
-
-  @Override
-  protected void onPostExecute(Drawable mapImage) {
-    LocationUi ui = uiReference.get();
-    if (ui == null) {
-      return;
-    }
-
-    try {
-      ui.setMap(mapImage);
-    } catch (Exception ex) {
-      LogUtil.e("DownloadMapImageTask.onPostExecute", "Exception!!!", ex);
-    }
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/LocationFragment.java b/java/com/android/incallui/calllocation/impl/LocationFragment.java
index 6b2c876..760829d 100644
--- a/java/com/android/incallui/calllocation/impl/LocationFragment.java
+++ b/java/com/android/incallui/calllocation/impl/LocationFragment.java
@@ -18,21 +18,26 @@
 
 import android.animation.LayoutTransition;
 import android.content.Context;
-import android.graphics.drawable.Drawable;
 import android.location.Location;
 import android.os.Bundle;
 import android.os.Handler;
+import android.support.annotation.NonNull;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.ViewAnimator;
+import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.incallui.baseui.BaseFragment;
+import com.google.android.gms.maps.CameraUpdateFactory;
+import com.google.android.gms.maps.GoogleMap;
+import com.google.android.gms.maps.MapView;
+import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.MarkerOptions;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
@@ -54,13 +59,16 @@
   private static final long FIND_LOCATION_SPINNING_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(5);
   private static final long LOAD_DATA_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(5);
 
+  private static final float MAP_ZOOM_LEVEL = 15f;
+
   private ViewAnimator viewAnimator;
-  private ImageView locationMap;
+  private MapView locationMapView;
   private TextView addressLine1;
   private TextView addressLine2;
   private TextView latLongLine;
   private Location location;
   private ViewGroup locationLayout;
+  private GoogleMap savedGoogleMap;
 
   private boolean isMapSet;
   private boolean isAddressSet;
@@ -101,11 +109,12 @@
     LogUtil.enterBlock("LocationFragment.onCreateView");
     final View view = inflater.inflate(R.layout.location_fragment, container, false);
     viewAnimator = (ViewAnimator) view.findViewById(R.id.location_view_animator);
-    locationMap = (ImageView) view.findViewById(R.id.location_map);
     addressLine1 = (TextView) view.findViewById(R.id.address_line_one);
     addressLine2 = (TextView) view.findViewById(R.id.address_line_two);
     latLongLine = (TextView) view.findViewById(R.id.lat_long_line);
     locationLayout = (ViewGroup) view.findViewById(R.id.location_layout);
+    locationMapView = (MapView) view.findViewById(R.id.location_map_view);
+    locationMapView.onCreate(savedInstanceState);
     return view;
   }
 
@@ -122,16 +131,46 @@
     handler.removeCallbacks(spinningTimeoutRunnable);
   }
 
-  @Override
-  public void setMap(Drawable mapImage) {
+  private void setMap(@NonNull Location location) {
     LogUtil.enterBlock("LocationFragment.setMap");
-    isMapSet = true;
-    locationMap.setVisibility(View.VISIBLE);
-    locationMap.setImageDrawable(mapImage);
+    Assert.isNotNull(location);
+
+    if (savedGoogleMap == null) {
+      locationMapView.getMapAsync(
+          (googleMap) -> {
+            LogUtil.enterBlock("LocationFragment.onMapReady");
+            savedGoogleMap = googleMap;
+            savedGoogleMap.getUiSettings().setMapToolbarEnabled(false);
+            updateMap(location);
+            isMapSet = true;
+            locationMapView.setVisibility(View.VISIBLE);
+
+            // Hide Google logo
+            View child = locationMapView.getChildAt(0);
+            if (child instanceof ViewGroup) {
+              // Only the first child (View) is useful.
+              // Google logo can be in any other child (ViewGroup).
+              for (int i = 1; i < ((ViewGroup) child).getChildCount(); ++i) {
+                ((ViewGroup) child).getChildAt(i).setVisibility(View.GONE);
+              }
+            }
+          });
+    } else {
+      updateMap(location);
+    }
     displayWhenReady();
     Logger.get(getContext()).logImpression(DialerImpression.Type.EMERGENCY_GOT_MAP);
   }
 
+  private void updateMap(@NonNull Location location) {
+    Assert.isNotNull(location);
+    Assert.isNotNull(savedGoogleMap);
+    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
+    savedGoogleMap.clear();
+    savedGoogleMap.addMarker(new MarkerOptions().position(latLng).flat(true).draggable(false));
+    savedGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, MAP_ZOOM_LEVEL));
+  }
+
   @Override
   public void setAddress(String address) {
     LogUtil.i("LocationFragment.setAddress", address);
@@ -175,6 +214,7 @@
                   R.string.lat_long_format, location.getLatitude(), location.getLongitude()));
 
       Logger.get(getContext()).logImpression(DialerImpression.Type.EMERGENCY_GOT_LOCATION);
+      setMap(location);
     }
     displayWhenReady();
   }
@@ -218,4 +258,16 @@
       view.setText(text);
     }
   }
+
+  @Override
+  public void onResume() {
+    super.onResume();
+    locationMapView.onResume();
+  }
+
+  @Override
+  public void onPause() {
+    locationMapView.onPause();
+    super.onPause();
+  }
 }
diff --git a/java/com/android/incallui/calllocation/impl/LocationPresenter.java b/java/com/android/incallui/calllocation/impl/LocationPresenter.java
index 83195ba..94bd235 100644
--- a/java/com/android/incallui/calllocation/impl/LocationPresenter.java
+++ b/java/com/android/incallui/calllocation/impl/LocationPresenter.java
@@ -17,7 +17,6 @@
 package com.android.incallui.calllocation.impl;
 
 import android.content.Context;
-import android.graphics.drawable.Drawable;
 import android.location.Location;
 import android.os.AsyncTask;
 import com.android.dialer.common.LogUtil;
@@ -38,7 +37,6 @@
     implements LocationListener {
 
   private Location lastLocation;
-  private AsyncTask downloadMapTask;
   private AsyncTask reverseGeocodeTask;
 
   LocationPresenter() {}
@@ -55,9 +53,6 @@
     LogUtil.i("LocationPresenter.onUiUnready", "");
     super.onUiUnready(ui);
 
-    if (downloadMapTask != null) {
-      downloadMapTask.cancel(true);
-    }
     if (reverseGeocodeTask != null) {
       reverseGeocodeTask.cancel(true);
     }
@@ -76,7 +71,6 @@
       int status = LocationHelper.checkLocation(location);
       LocationUi ui = getUi();
       if (status == LocationHelper.LOCATION_STATUS_OK) {
-        downloadMapTask = new DownloadMapImageTask(new WeakReference<>(ui)).execute(location);
         reverseGeocodeTask = new ReverseGeocodeTask(new WeakReference<>(ui)).execute(location);
         if (ui != null) {
           ui.setLocation(location);
@@ -103,8 +97,6 @@
 
     void setAddress(String address);
 
-    void setMap(Drawable mapImage);
-
     void setLocation(Location location);
 
     Context getContext();
diff --git a/java/com/android/incallui/calllocation/impl/res/layout/location_fragment.xml b/java/com/android/incallui/calllocation/impl/res/layout/location_fragment.xml
deleted file mode 100644
index 771e1b8..0000000
--- a/java/com/android/incallui/calllocation/impl/res/layout/location_fragment.xml
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-~ Copyright (C) 2015 The Android Open Source Project
-~
-~ Licensed under the Apache License, Version 2.0 (the "License");
-~ you may not use this file except in compliance with the License.
-~ You may obtain a copy of the License at
-~
-~      http://www.apache.org/licenses/LICENSE-2.0
-~
-~ Unless required by applicable law or agreed to in writing, software
-~ distributed under the License is distributed on an "AS IS" BASIS,
-~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-~ See the License for the specific language governing permissions and
-~ limitations under the License
--->
-
-<ViewAnimator xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/location_view_animator"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_marginTop="16dp"
-    android:background="@drawable/bg_location_card"
-    android:elevation="2dp"
-    android:inAnimation="@android:anim/fade_in"
-    android:measureAllChildren="true"
-    android:outAnimation="@android:anim/fade_out">
-
-  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-      android:id="@+id/location_loading_layout"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:layout_gravity="center_vertical"
-      android:orientation="vertical">
-
-    <ProgressBar
-        android:id="@+id/location_loading_spinner"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="28dp"
-        android:layout_marginBottom="12dp"
-        android:layout_gravity="center_horizontal"/>
-
-    <TextView
-        android:id="@+id/location_loading_text"
-        style="@style/LocationLoadingTextStyle"
-        android:layout_width="match_parent"
-        android:layout_height="24sp"
-        android:layout_marginBottom="20dp"
-        android:layout_marginStart="24dp"
-        android:layout_marginEnd="24dp"
-        android:gravity="center"
-        android:text="@string/location_loading"/>
-
-  </LinearLayout>
-
-  <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
-      android:id="@+id/location_layout"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:layout_gravity="center"
-      android:columnCount="2"
-      android:orientation="horizontal">
-
-    <TextView
-        android:id="@+id/location_address_title"
-        style="@style/LocationAddressTitleTextStyle"
-        android:layout_width="0dp"
-        android:layout_height="20sp"
-        android:layout_marginTop="16dp"
-        android:layout_marginBottom="4dp"
-        android:layout_marginStart="16dp"
-        android:layout_columnWeight="1"
-        android:text="@string/location_title"/>
-
-    <ImageView
-        android:id="@+id/location_map"
-        android:layout_width="@dimen/location_map_width"
-        android:layout_height="@dimen/location_map_height"
-        android:layout_margin="16dp"
-        android:layout_gravity="end|center_vertical"
-        android:layout_rowSpan="4"
-        android:contentDescription="@string/location_map_description"
-        android:scaleType="centerCrop"
-        android:visibility="invisible"
-        tools:src="?android:attr/colorPrimaryDark"
-        tools:visibility="visible"/>
-
-    <TextView
-        android:id="@+id/address_line_one"
-        style="@style/LocationAddressTextStyle"
-        android:layout_width="0dp"
-        android:layout_height="24sp"
-        android:layout_marginStart="16dp"
-        android:layout_columnWeight="1"
-        android:ellipsize="end"
-        android:lines="1"
-        android:visibility="invisible"
-        tools:text="1600 Amphitheatre Pkwy And a bit"
-        tools:visibility="visible"/>
-
-    <TextView
-        android:id="@+id/address_line_two"
-        style="@style/LocationAddressTextStyle"
-        android:layout_width="0dp"
-        android:layout_height="24sp"
-        android:layout_marginStart="16dp"
-        android:layout_columnWeight="1"
-        android:ellipsize="end"
-        android:lines="1"
-        android:visibility="invisible"
-        tools:text="Mountain View, CA 94043"
-        tools:visibility="visible"/>
-
-    <TextView
-        android:id="@+id/lat_long_line"
-        style="@style/LocationLatLongTextStyle"
-        android:layout_width="0dp"
-        android:layout_height="24sp"
-        android:layout_marginBottom="12dp"
-        android:layout_marginStart="16dp"
-        android:layout_columnWeight="1"
-        android:ellipsize="end"
-        android:lines="1"
-        android:visibility="invisible"
-        tools:text="Lat: 37.421719, Long: -122.085297"
-        tools:visibility="visible"/>
-
-  </GridLayout>
-
-  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-      android:id="@+id/location_error_layout"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:layout_gravity="center_vertical"
-      android:orientation="vertical">
-
-    <ImageView
-        android:id="@+id/location_error_icon"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="32dp"
-        android:layout_marginBottom="12dp"
-        android:layout_gravity="center_horizontal"
-        android:src="@drawable/quantum_ic_error_outline_vd_theme_36"
-        android:tint="@color/dialer_red"/>
-
-    <TextView
-        android:id="@+id/location_error_text"
-        style="@style/LocationErrorTextStyle"
-        android:layout_width="match_parent"
-        android:layout_height="24sp"
-        android:layout_marginBottom="20dp"
-        android:layout_marginStart="16dp"
-        android:layout_marginEnd="16dp"
-        android:gravity="center"
-        android:text="@string/location_error"/>
-
-  </LinearLayout>
-
-</ViewAnimator>
diff --git a/java/com/android/incallui/maps/impl/AndroidManifest.xml b/java/com/android/incallui/maps/impl/AndroidManifest.xml
index bc921e9..4c17f33 100644
--- a/java/com/android/incallui/maps/impl/AndroidManifest.xml
+++ b/java/com/android/incallui/maps/impl/AndroidManifest.xml
@@ -19,6 +19,8 @@
   package="com.android.incallui.maps.impl">
 
   <application>
+    <!-- Fix for P -->
+    <uses-library android:name="org.apache.http.legacy" android:required="false" />
 
     <meta-data
       android:name="com.google.android.gms.version"
