From b9d4704a34c3a66b504d5927771d7d298dadb0f9 Mon Sep 17 00:00:00 2001 From: EinfachHans Date: Fri, 18 Feb 2022 09:49:29 +0100 Subject: [PATCH 1/4] fix: 2871 --- .../plugin/google/maps/CordovaGoogleMaps.java | 15 ++++++--------- src/android/plugin/google/maps/PluginMap.java | 6 ------ 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/android/plugin/google/maps/CordovaGoogleMaps.java b/src/android/plugin/google/maps/CordovaGoogleMaps.java index 7e965dcee..2f1369dbe 100644 --- a/src/android/plugin/google/maps/CordovaGoogleMaps.java +++ b/src/android/plugin/google/maps/CordovaGoogleMaps.java @@ -448,15 +448,13 @@ public void getMap(final JSONArray args, final CallbackContext callbackContext) //------------------------------------------ JSONObject meta = args.getJSONObject(0); String mapId = meta.getString("__pgmId"); - PluginMap pluginMap = new PluginMap(); - pluginMap.privateInitialize(mapId, cordova, webView, null); - pluginMap.initialize(cordova, webView); - pluginMap.mapCtrl = CordovaGoogleMaps.this; - pluginMap.self = pluginMap; + PluginMap pluginMap = new PluginMap(); PluginEntry pluginEntry = new PluginEntry(mapId, pluginMap); pluginManager.addService(pluginEntry); + pluginMap.mapCtrl = CordovaGoogleMaps.this; + pluginMap.self = pluginMap; pluginMap.getMap(args, callbackContext); } @@ -470,14 +468,13 @@ public void getPanorama(final JSONArray args, final CallbackContext callbackCont String mapId = meta.getString("__pgmId"); Log.d(TAG, "---> mapId = " + mapId); PluginStreetViewPanorama pluginStreetView = new PluginStreetViewPanorama(); - pluginStreetView.privateInitialize(mapId, cordova, webView, null); - pluginStreetView.initialize(cordova, webView); - pluginStreetView.mapCtrl = CordovaGoogleMaps.this; - pluginStreetView.self = pluginStreetView; PluginEntry pluginEntry = new PluginEntry(mapId, pluginStreetView); pluginManager.addService(pluginEntry); + pluginStreetView.mapCtrl = CordovaGoogleMaps.this; + pluginStreetView.self = pluginStreetView; + pluginStreetView.getPanorama(args, callbackContext); } diff --git a/src/android/plugin/google/maps/PluginMap.java b/src/android/plugin/google/maps/PluginMap.java index a3d379f0e..3d1cf72b2 100644 --- a/src/android/plugin/google/maps/PluginMap.java +++ b/src/android/plugin/google/maps/PluginMap.java @@ -613,9 +613,6 @@ public synchronized void loadPlugin(final JSONArray args, final CallbackContext plugins.put(pluginName, pluginEntry); mapCtrl.pluginManager.addService(pluginEntry); - plugin.privateInitialize(pluginName, cordova, webView, null); - - plugin.initialize(cordova, webView); ((MyPluginInterface)plugin).setPluginMap(PluginMap.this); MyPlugin myPlugin = (MyPlugin) plugin; myPlugin.self = (MyPlugin)plugin; @@ -666,12 +663,9 @@ public void create(final JSONArray args, final CallbackContext callbackContext) pluginMap = PluginMap.this; pluginMap.mapCtrl.pluginManager.addService(pluginEntry); - plugin.privateInitialize(className, cordova, webView, null); - plugin.initialize(cordova, webView); ((MyPluginInterface)plugin).setPluginMap(PluginMap.this); pluginEntry.plugin.execute("create", args, callbackContext); - } catch (Exception e) { e.printStackTrace(); } From 4a096acd4ad0efe25aadf576253b55cb0383ad0a Mon Sep 17 00:00:00 2001 From: EinfachHans Date: Fri, 18 Feb 2022 11:46:48 +0100 Subject: [PATCH 2/4] chore: use default android play version 18.+ --- README.md | 2 +- src/android/frameworks/pgm-custom.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dd66aebfd..62530b995 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ For browser platform, ## Install optional variables (config.xml) - - ![](https://raw.githubusercontent.com/mapsplugin/cordova-plugin-googlemaps/master/images/icon-android.png) **GOOGLE_MAPS_PLAY_SERVICES_VERSION = (16.0.1)**
+ - ![](https://raw.githubusercontent.com/mapsplugin/cordova-plugin-googlemaps/master/images/icon-android.png) **GOOGLE_MAPS_PLAY_SERVICES_VERSION = (18.+)**
The Google Play Services SDK version. _You need to specify the same version number with all other plugins._ Check out the latest version [here](https://developers.google.com/android/guides/releases). diff --git a/src/android/frameworks/pgm-custom.gradle b/src/android/frameworks/pgm-custom.gradle index 0144d229d..e33b83361 100644 --- a/src/android/frameworks/pgm-custom.gradle +++ b/src/android/frameworks/pgm-custom.gradle @@ -39,7 +39,7 @@ android { Properties props = new Properties() def isKeyFound = 0 def useBetaSdk = 0 - props.setProperty("GOOGLE_MAPS_PLAY_SERVICES_VERSION", "16.0.0"); + props.setProperty("GOOGLE_MAPS_PLAY_SERVICES_VERSION", "18.+"); props.setProperty("ANDROID_SUPPORT_V4_VERSION", "27.1.1"); props.setProperty("GOOGLE_MAPS_ANDROID_SDK", ""); From 71d8d45286a451270518847f95a25e74ee7fa382 Mon Sep 17 00:00:00 2001 From: EinfachHans Date: Fri, 18 Feb 2022 11:55:41 +0100 Subject: [PATCH 3/4] feat: use latest renderer --- .../plugin/google/maps/CordovaGoogleMaps.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/android/plugin/google/maps/CordovaGoogleMaps.java b/src/android/plugin/google/maps/CordovaGoogleMaps.java index 2f1369dbe..b487a4194 100644 --- a/src/android/plugin/google/maps/CordovaGoogleMaps.java +++ b/src/android/plugin/google/maps/CordovaGoogleMaps.java @@ -22,9 +22,13 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; +import androidx.annotation.NonNull; + import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.maps.MapsInitializer; +import com.google.android.gms.maps.MapsInitializer.Renderer; +import com.google.android.gms.maps.OnMapsSdkInitializedCallback; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaInterface; @@ -45,7 +49,7 @@ import java.util.Set; @SuppressWarnings("deprecation") -public class CordovaGoogleMaps extends CordovaPlugin implements ViewTreeObserver.OnScrollChangedListener{ +public class CordovaGoogleMaps extends CordovaPlugin implements ViewTreeObserver.OnScrollChangedListener, OnMapsSdkInitializedCallback { private final String TAG = "GoogleMapsPlugin"; private Activity activity; public ViewGroup root; @@ -69,6 +73,8 @@ public void initialize(final CordovaInterface cordova, final CordovaWebView webV pluginManager = webView.getPluginManager(); + CordovaGoogleMaps that = this; + cordova.getActivity().runOnUiThread(new Runnable() { @SuppressLint("NewApi") public void run() { @@ -202,8 +208,7 @@ public void onClick(DialogInterface dialog,int id) { //------------------------------ if (!initialized) { try { - MapsInitializer.initialize(cordova.getActivity()); - initialized = true; + MapsInitializer.initialize(cordova.getActivity(), Renderer.LATEST, that); } catch (Exception e) { e.printStackTrace(); } @@ -211,8 +216,19 @@ public void onClick(DialogInterface dialog,int id) { } }); + } - + @Override + public void onMapsSdkInitialized(@NonNull Renderer renderer) { + initialized = true; + switch (renderer) { + case LATEST: + Log.d(TAG, "The latest version of the renderer is used"); + break; + case LEGACY: + Log.d(TAG, "The legacy version of the renderer is used"); + break; + } } @Override From 4c4c961c99f3b58c5ffcfedf43d005b8765033aa Mon Sep 17 00:00:00 2001 From: Itsaso Aguirre Lorenzo Date: Fri, 2 Feb 2024 13:30:37 +0100 Subject: [PATCH 4/4] (ios) fix build errors caused with cordova-ios@7 due to CDVCommandDelegateImpl --- src/ios/GoogleMaps/PluginMap.m | 2 +- src/ios/GoogleMaps/PluginMarker.m | 44 ++++++++++++------------ src/ios/GoogleMaps/PluginMarkerCluster.m | 2 +- src/ios/GoogleMaps/PluginUtil.h | 5 --- src/ios/GoogleMaps/PluginUtil.m | 20 ----------- 5 files changed, 24 insertions(+), 49 deletions(-) diff --git a/src/ios/GoogleMaps/PluginMap.m b/src/ios/GoogleMaps/PluginMap.m index 31605c94c..3080fea3c 100644 --- a/src/ios/GoogleMaps/PluginMap.m +++ b/src/ios/GoogleMaps/PluginMap.m @@ -667,7 +667,7 @@ - (void)setActiveMarkerId:(CDVInvokedUrlCommand*)command { } CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; } diff --git a/src/ios/GoogleMaps/PluginMarker.m b/src/ios/GoogleMaps/PluginMarker.m index f06e4c659..77b4fb3cd 100644 --- a/src/ios/GoogleMaps/PluginMarker.m +++ b/src/ios/GoogleMaps/PluginMarker.m @@ -73,7 +73,7 @@ -(void)create:(CDVInvokedUrlCommand *)command [createResult setObject:markerId forKey:@"__pgmId"]; [[NSOperationQueue mainQueue] addOperationWithBlock:^{ - CDVCommandDelegateImpl *cmdDelegate = (CDVCommandDelegateImpl *)self.commandDelegate; + __weak __auto_type weakSelf = self; [self _create:markerId markerOptions:json callbackBlock:^(BOOL successed, id result) { CDVPluginResult* pluginResult; @@ -93,7 +93,7 @@ -(void)create:(CDVInvokedUrlCommand *)command pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:createResult ]; } - [cmdDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [weakSelf.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; @@ -255,7 +255,7 @@ -(void)showInfoWindow:(CDVInvokedUrlCommand *)command } CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -270,7 +270,7 @@ -(void)hideInfoWindow:(CDVInvokedUrlCommand *)command self.mapCtrl.map.selectedMarker = nil; self.mapCtrl.activeMarker = nil; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -295,7 +295,7 @@ -(void)getPosition:(CDVInvokedUrlCommand *)command [json setObject:longitude forKey:@"lng"]; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:json]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; } @@ -319,7 +319,7 @@ -(void)setTitle:(CDVInvokedUrlCommand *)command CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -338,7 +338,7 @@ -(void)setSnippet:(CDVInvokedUrlCommand *)command marker.snippet = [command.arguments objectAtIndex:1]; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -358,7 +358,7 @@ -(void)remove:(CDVInvokedUrlCommand *)command marker = nil; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -424,7 +424,7 @@ -(void)setIconAnchor:(CDVInvokedUrlCommand *)command } CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; } @@ -450,7 +450,7 @@ -(void)setInfoWindowAnchor:(CDVInvokedUrlCommand *)command } else { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR]; } - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; @@ -470,7 +470,7 @@ -(void)setOpacity:(CDVInvokedUrlCommand *)command marker.opacity = [[command.arguments objectAtIndex:1] floatValue]; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -488,7 +488,7 @@ -(void)setZIndex:(CDVInvokedUrlCommand *)command marker.zIndex = [[command.arguments objectAtIndex:1] intValue]; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -507,7 +507,7 @@ -(void)setDraggable:(CDVInvokedUrlCommand *)command [marker setDraggable:isEnabled]; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -530,7 +530,7 @@ -(void)setDisableAutoPan:(CDVInvokedUrlCommand *)command NSLog(@"--->propertyId = %@", propertyId); CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; } @@ -560,7 +560,7 @@ -(void)setVisible:(CDVInvokedUrlCommand *)command [self.mapCtrl.objects setObject:properties forKey:propertyId]; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -582,7 +582,7 @@ -(void)setPosition:(CDVInvokedUrlCommand *)command [marker setPosition:position]; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -601,7 +601,7 @@ -(void)setFlat:(CDVInvokedUrlCommand *)command [marker setFlat: isFlat]; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -645,7 +645,7 @@ -(void)setIcon:(CDVInvokedUrlCommand *)command [iconProperty setObject:[rgbColor parsePluginColor] forKey:@"iconColor"]; } - CDVCommandDelegateImpl *cmdDelegate = (CDVCommandDelegateImpl *)self.commandDelegate; + __weak __auto_type weakSelf = self; [self setIcon_:marker iconProperty:iconProperty callbackBlock:^(BOOL successed, id resultObj) { CDVPluginResult* pluginResult; if (successed == NO) { @@ -653,7 +653,7 @@ -(void)setIcon:(CDVInvokedUrlCommand *)command } else { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; } - [cmdDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [weakSelf.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -671,7 +671,7 @@ -(void)setRotation:(CDVInvokedUrlCommand *)command [marker setRotation:degrees]; CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; } @@ -686,11 +686,11 @@ -(void)setAnimation:(CDVInvokedUrlCommand *)command GMSMarker *marker = [self.mapCtrl.objects objectForKey:markerId]; NSString *animation = [command.arguments objectAtIndex:1]; - CDVCommandDelegateImpl *cmdDelegate = (CDVCommandDelegateImpl *)self.commandDelegate; + __weak __auto_type weakSelf = self; [self setMarkerAnimation_:animation marker:marker callbackBlock:^(void) { CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; - [cmdDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [weakSelf.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }]; }]; }]; diff --git a/src/ios/GoogleMaps/PluginMarkerCluster.m b/src/ios/GoogleMaps/PluginMarkerCluster.m index cbf706ff4..a7d61ca37 100644 --- a/src/ios/GoogleMaps/PluginMarkerCluster.m +++ b/src/ios/GoogleMaps/PluginMarkerCluster.m @@ -453,7 +453,7 @@ - (void)redrawClusters:(CDVInvokedUrlCommand*)command { - (void) endRedraw:(CDVInvokedUrlCommand*)command { NSLog(@"--->allResults = %@", self.allResults); CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:self.allResults]; - [(CDVCommandDelegateImpl *)self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; } - (void) deleteProcess:(NSDictionary *) params clusterId:(NSString *)clusterId{ diff --git a/src/ios/GoogleMaps/PluginUtil.h b/src/ios/GoogleMaps/PluginUtil.h index d7454edfa..d9fc5b720 100644 --- a/src/ios/GoogleMaps/PluginUtil.h +++ b/src/ios/GoogleMaps/PluginUtil.h @@ -20,7 +20,6 @@ #import "IPluginProtocol.h" #import "PluginViewController.h" #import -#import typedef void (^MYCompletionHandler)(NSError *error); @@ -49,10 +48,6 @@ typedef void (^MYCompletionHandler)(NSError *error); - (UIImage *)resize:(CGFloat)width height:(CGFloat)height; @end -@interface CDVCommandDelegateImpl (GoogleMapsPlugin) -- (void)hookSendPluginResult:(CDVPluginResult*)result callbackId:(NSString*)callbackId; -@end - // // animationDidStop for group animation // http://stackoverflow.com/a/28051909/697856 diff --git a/src/ios/GoogleMaps/PluginUtil.m b/src/ios/GoogleMaps/PluginUtil.m index b2b283d92..096cc8616 100644 --- a/src/ios/GoogleMaps/PluginUtil.m +++ b/src/ios/GoogleMaps/PluginUtil.m @@ -107,26 +107,6 @@ -(UIImage *)resize:(CGFloat)width height:(CGFloat)height { @end - -/* -@implementation CDVCommandDelegateImpl (GoogleMapsPlugin) - -- (void)hookSendPluginResult:(CDVPluginResult*)result callbackId:(NSString*)callbackId { - - NSRange pos = [callbackId rangeOfString:@"://"]; - if (pos.location == NSNotFound) { - [self sendPluginResult:result callbackId:callbackId]; - } else { - NSArray *tmp = [callbackId componentsSeparatedByString:@"://"]; - NSString *pluginName = [tmp objectAtIndex:0]; - CDVPlugin *plugin = [self getCommandInstance:pluginName]; - [plugin onHookedPluginResult:result callbackId:callbackId]; - } - -} -@end -*/ - static char CAAnimationGroupBlockKey; @implementation CAAnimationGroup (Blocks)