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)
- -  **GOOGLE_MAPS_PLAY_SERVICES_VERSION = (16.0.1)**
+ -  **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", "");
diff --git a/src/android/plugin/google/maps/CordovaGoogleMaps.java b/src/android/plugin/google/maps/CordovaGoogleMaps.java
index 7e965dcee..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
@@ -448,15 +464,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 +484,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();
}
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)