I am not sure this is a permission problem. I implemented the runtime permission code indicated in your link for PERMISSION_FINE_LOCATION and still get the crash when the map is opened.
The log shows this in debug mode:
** Activity (googlemaps) Resume **
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion;
at bs.b
com.google.android.gms.dynamite_mapsdynamite@19629065@19.6.29 (100400-0):2)
at br.a
com.google.android.gms.dynamite_mapsdynamite@19629065@19.6.29 (100400-0):3)
at bt.a
com.google.android.gms.dynamite_mapsdynamite@19629065@19.6.29 (100400-0):20)
at com.google.maps.api.android.lib6.drd.ak.a
com.google.android.gms.dynamite_mapsdynamite@19629065@19.6.29 (100400-0):6)
at ax.a
com.google.android.gms.dynamite_mapsdynamite@19629065@19.6.29 (100400-0):13)
at ax.run
com.google.android.gms.dynamite_mapsdynamite@19629065@19.6.29 (100400-0):49)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.ProtocolVersion" on path: DexPathList[[zip file "/data/user_de/0/com.google.android.gms/app_chimera/m/0000002b/MapsDynamite.apk"],nativeLibraryDirectories=[/data/user_de/0/com.google.android.gms/app_chimera/m/0000002b/MapsDynamite.apk!/lib/arm64-v8a, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at w.loadClass
com.google.android.gms.dynamite_dynamiteloader@19629065@19.6.29 (100400-0):16)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 6 more
** Activity (googlemaps) Pause, UserClosed = true **
Does the log info above help pinpoint this?