cordova-plugin-googlemaps: Crash when setting icon on marker from file

Hi, I get a crash when using a custom image as a marker on Android.

I’m using Cordova 5.0.0 so that may be part of the issue.

I’ve tried using file:///, using www/, and using cdvfile:// and it crashes every time. It works with http:// though.

Crash logs using www/

/AndroidRuntime(19049): FATAL EXCEPTION: AsyncTask #2
E/AndroidRuntime(19049): Process: com.example.example, PID: 19049
E/AndroidRuntime(19049): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(19049):    at android.os.AsyncTask$3.done(AsyncTask.java:304)
E/AndroidRuntime(19049):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
E/AndroidRuntime(19049):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
E/AndroidRuntime(19049):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
E/AndroidRuntime(19049):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
E/AndroidRuntime(19049):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime(19049):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/AndroidRuntime(19049):    at java.lang.Thread.run(Thread.java:818)
E/AndroidRuntime(19049): Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'android.app.Activity org.apache.cordova.CordovaInterface.getActivity()' on a null object reference
E/AndroidRuntime(19049):    at plugin.google.maps.PluginMarker$7.doInBackground(PluginMarker.java:716)
E/AndroidRuntime(19049):    at plugin.google.maps.PluginMarker$7.doInBackground(PluginMarker.java:683)
E/AndroidRuntime(19049):    at android.os.AsyncTask$2.call(AsyncTask.java:292)
E/AndroidRuntime(19049):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime(19049):    ... 4 more

Crash logs using file:///:

E/AndroidRuntime(24243): FATAL EXCEPTION: AsyncTask #2
E/AndroidRuntime(24243): Process: com.example.example, PID: 24243
E/AndroidRuntime(24243): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(24243):    at android.os.AsyncTask$3.done(AsyncTask.java:304)
E/AndroidRuntime(24243):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
E/AndroidRuntime(24243):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
E/AndroidRuntime(24243):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
E/AndroidRuntime(24243):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
E/AndroidRuntime(24243):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime(24243):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/AndroidRuntime(24243):    at java.lang.Thread.run(Thread.java:818)
E/AndroidRuntime(24243): Caused by: java.lang.IllegalStateException: Not on the main thread
E/AndroidRuntime(24243):    at com.google.l.a.ce.b(Unknown Source)
E/AndroidRuntime(24243):    at com.google.maps.api.android.lib6.d.ct.a(Unknown Source)
E/AndroidRuntime(24243):    at com.google.maps.api.android.lib6.d.aq.b(Unknown Source)
E/AndroidRuntime(24243):    at com.google.android.gms.maps.model.internal.t.onTransact(SourceFile:169)
E/AndroidRuntime(24243):    at android.os.Binder.transact(Binder.java:380)
E/AndroidRuntime(24243):    at com.google.android.gms.maps.model.internal.zzl$zza$zza.setVisible(Unknown Source)
E/AndroidRuntime(24243):    at com.google.android.gms.maps.model.Marker.setVisible(Unknown Source)
E/AndroidRuntime(24243):    at plugin.google.maps.PluginMarker$1.onPostExecute(PluginMarker.java:161)
E/AndroidRuntime(24243):    at plugin.google.maps.PluginMarker$7.doInBackground(PluginMarker.java:728)
E/AndroidRuntime(24243):    at plugin.google.maps.PluginMarker$7.doInBackground(PluginMarker.java:683)
E/AndroidRuntime(24243):    at android.os.AsyncTask$2.call(AsyncTask.java:292)
E/AndroidRuntime(24243):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime(24243):    ... 4 more

My directory structure is:

main-app/
    platform/
    plugins/
    www/
        js/
        img/
            marker.png

Relevant js code:

        var div = this.refs.mapCanvas.getDOMNode();

        // Initialize the map view
        var mapObj = plugin.google.maps.Map.getMap(div);
        mapObj.addEventListener(plugin.google.maps.event.MAP_READY, (map) => {
            Server.get("/markers")
                .then((res) => {
                    for (let marker of res.results) {
                        var [lat, lng] = $.map(marker.position.split(","), parseFloat);
                        var position = new plugin.google.maps.LatLng(lat, lng);
                        map.addMarker({
                            position: position,
                            title: marker.name,
                            icon: "file:///img/marker.png"
                        });
                    }
                });
        });

Any ideas on what might be causing this?

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Comments: 48 (18 by maintainers)

Most upvoted comments

I am getting the same error.

FATAL EXCEPTION: AsyncTask #1 Process:, PID: 7935 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:300) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.NullPointerException: Attempt to invoke interface method ‘android.app.Activity org.apache.cordova.CordovaInterface.getActivity()’ on a null object reference at plugin.google.maps.PluginMarker$7.doInBackground(PluginMarker.java:716) at plugin.google.maps.PluginMarker$7.doInBackground(PluginMarker.java:683) at android.os.AsyncTask$2.call(AsyncTask.java:288) at java.util.concurrent.FutureTask.run(FutureTask.java:237) … 4 more

Any idea? I am using Cordova 5 too with https://github.com/Nipher/phonegap-googlemaps-plugin fork, It was working ok with the master branch here but is probably something with Cordova Android new version.