mapsplugin / cordova-plugin-googlemaps

Google Maps plugin for Cordova
Apache License 2.0
1.66k stars 913 forks source link

[Android] Custom marker not showing when using Cordova-android 10+ #2886

Open ebhsgit opened 2 years ago

ebhsgit commented 2 years ago

I'm submitting a ... (check one with "x")

OS: (check one with "x")

cordova information: (run $> cordova plugin list)

cordova-android: 10.1.1

If you use @ionic-native/google-maps, please tell the package.json (only @ionic-native/core and @ionic-native/google-maps are fine mostly)

@ionic-native/core : 4.20.0
@ionic-native/google-maps : ^2.7.0

Cause cordova-android 10+ switched to use WebAssetLoader, and the default scheme is https The AsyncLoadImage file did not check for https scheme for localhost

More info here: https://cordova.apache.org/announcements/2021/07/20/cordova-android-10.0.0.html https://github.com/apache/cordova-android/issues/1316

Current behavior: The default Google Map red marker is shown

Expected behavior: The custom image is used for the Marker

Fix The gist is to change line 199 to this.

      if (iconUrl.startsWith("http://localhost") ||
          iconUrl.startsWith("https://localhost") ||
          iconUrl.startsWith("http://127.0.0.1") ||
          iconUrl.startsWith("https://127.0.0.1")
      ) {
//        Log.d(TAG, String.format("---->(201)iconURL = %s", iconUrl));
        if (iconUrl.contains("://")) {
          iconUrl = iconUrl.replaceAll("https?://.+?/", "file:///android_asset/www/");
        } else {
          // Avoid WebViewLocalServer (because can not make a connection for some reason)
          iconUrl = "file:///android_asset/www/".concat(iconUrl);
        }
      }

Screen capture or video record:

Related code, data or error log (please format your code or data):

Please share your project files on Github or others(Bitbucket, Gitlabs...etc).
If you don't want to share your project files, please create a demo project, then share it.

Screen captures, and/or native logs(such as Logcat, xcode logs) are appreciate.

Giving much information, you are waiting time is less.
Thank you for your cooperation.

Support this plugin activity

I appreicate if you give me a beer :beer: from here

ebhsgit commented 2 years ago

Issue also mentioned in #2871

SoftwareAndOutsourcing commented 2 years ago

The solution above seems to solve the issue but customs markers will still not show if you use the Cordova local development server.