77//
88
99#import " GoogleMapsViewController.h"
10+ #if CORDOVA_VERSION_MIN_REQUIRED < __CORDOVA_4_0_0
1011#import < Cordova/CDVJSON.h>
12+ #endif
1113
1214
1315@implementation GoogleMapsViewController
@@ -176,8 +178,13 @@ - (void)didReceiveMemoryWarning
176178 * camera to move such that it is centered on the user location.
177179 */
178180- (BOOL )didTapMyLocationButtonForMapView : (GMSMapView *)mapView {
179- [self .webView stringByEvaluatingJavaScriptFromString: @" plugin.google.maps.Map._onMapEvent('my_location_button_click');" ];
180- return NO ;
181+ NSString *jsString = @" plugin.google.maps.Map._onMapEvent('my_location_button_click');" ;
182+ if ([self .webView respondsToSelector: @selector (stringByEvaluatingJavaScriptFromString: )]) {
183+ [self .webView performSelector: @selector (stringByEvaluatingJavaScriptFromString: ) withObject: jsString];
184+ } else if ([self .webView respondsToSelector: @selector (evaluateJavaScript:completionHandler: )]) {
185+ [self .webView performSelector: @selector (evaluateJavaScript:completionHandler: ) withObject: jsString withObject: nil ];
186+ }
187+ return NO ;
181188}
182189
183190#pragma mark - GMSMapViewDelegate
@@ -204,7 +211,11 @@ - (void) mapView:(GMSMapView *)mapView willMove:(BOOL)gesture
204211 dispatch_sync (gueue, ^{
205212
206213 NSString * jsString = [NSString stringWithFormat: @" plugin.google.maps.Map._onMapEvent('will_move', %@ );" , gesture ? @" true" : @" false" ];
207- [self .webView stringByEvaluatingJavaScriptFromString: jsString];
214+ if ([self .webView respondsToSelector: @selector (stringByEvaluatingJavaScriptFromString: )]) {
215+ [self .webView performSelector: @selector (stringByEvaluatingJavaScriptFromString: ) withObject: jsString];
216+ } else if ([self .webView respondsToSelector: @selector (evaluateJavaScript:completionHandler: )]) {
217+ [self .webView performSelector: @selector (evaluateJavaScript:completionHandler: ) withObject: jsString withObject: nil ];
218+ }
208219 });
209220}
210221
@@ -291,7 +302,11 @@ - (void)triggerMapEvent: (NSString *)eventName coordinate:(CLLocationCoordinate2
291302{
292303 NSString * jsString = [NSString stringWithFormat: @" plugin.google.maps.Map._onMapEvent('%@ ', new window.plugin.google.maps.LatLng(%f ,%f ));" ,
293304 eventName, coordinate.latitude, coordinate.longitude];
294- [self .webView stringByEvaluatingJavaScriptFromString: jsString];
305+ if ([self .webView respondsToSelector: @selector (stringByEvaluatingJavaScriptFromString: )]) {
306+ [self .webView performSelector: @selector (stringByEvaluatingJavaScriptFromString: ) withObject: jsString];
307+ } else if ([self .webView respondsToSelector: @selector (evaluateJavaScript:completionHandler: )]) {
308+ [self .webView performSelector: @selector (evaluateJavaScript:completionHandler: ) withObject: jsString withObject: nil ];
309+ }
295310}
296311/* *
297312 * Involve App._onCameraEvent
@@ -315,7 +330,11 @@ - (void)triggerCameraEvent: (NSString *)eventName position:(GMSCameraPosition *)
315330 NSString * sourceArrayString = [[NSString alloc ] initWithData: jsonData encoding: NSUTF8StringEncoding];
316331 NSString * jsString = [NSString stringWithFormat: @" plugin.google.maps.Map._onCameraEvent('%@ ', %@ );" , eventName, sourceArrayString];
317332
318- [self .webView stringByEvaluatingJavaScriptFromString: jsString];
333+ if ([self .webView respondsToSelector: @selector (stringByEvaluatingJavaScriptFromString: )]) {
334+ [self .webView performSelector: @selector (stringByEvaluatingJavaScriptFromString: ) withObject: jsString];
335+ } else if ([self .webView respondsToSelector: @selector (evaluateJavaScript:completionHandler: )]) {
336+ [self .webView performSelector: @selector (evaluateJavaScript:completionHandler: ) withObject: jsString withObject: nil ];
337+ }
319338}
320339
321340
@@ -326,7 +345,11 @@ - (void)triggerMarkerEvent: (NSString *)eventName marker:(GMSMarker *)marker
326345{
327346 NSString * jsString = [NSString stringWithFormat: @" plugin.google.maps.Map._onMarkerEvent('%@ ', 'marker_%lu ');" ,
328347 eventName, (unsigned long )marker.hash];
329- [self .webView stringByEvaluatingJavaScriptFromString: jsString];
348+ if ([self .webView respondsToSelector: @selector (stringByEvaluatingJavaScriptFromString: )]) {
349+ [self .webView performSelector: @selector (stringByEvaluatingJavaScriptFromString: ) withObject: jsString];
350+ } else if ([self .webView respondsToSelector: @selector (evaluateJavaScript:completionHandler: )]) {
351+ [self .webView performSelector: @selector (evaluateJavaScript:completionHandler: ) withObject: jsString withObject: nil ];
352+ }
330353}
331354
332355/* *
@@ -336,7 +359,11 @@ - (void)triggerOverlayEvent: (NSString *)eventName id:(NSString *) id
336359{
337360 NSString * jsString = [NSString stringWithFormat: @" plugin.google.maps.Map._onOverlayEvent('%@ ', '%@ ');" ,
338361 eventName, id ];
339- [self .webView stringByEvaluatingJavaScriptFromString: jsString];
362+ if ([self .webView respondsToSelector: @selector (stringByEvaluatingJavaScriptFromString: )]) {
363+ [self .webView performSelector: @selector (stringByEvaluatingJavaScriptFromString: ) withObject: jsString];
364+ } else if ([self .webView respondsToSelector: @selector (evaluateJavaScript:completionHandler: )]) {
365+ [self .webView performSelector: @selector (evaluateJavaScript:completionHandler: ) withObject: jsString withObject: nil ];
366+ }
340367}
341368
342369// future support: custom info window
@@ -714,7 +741,11 @@ -(UIImage *)loadImageFromGoogleMap:(NSString *)fileName {
714741- (void ) didChangeActiveBuilding : (GMSIndoorBuilding *)building {
715742 // Notify to the JS
716743 NSString * jsString = @" javascript:plugin.google.maps.Map._onMapEvent('indoor_building_focused')" ;
717- [self .webView stringByEvaluatingJavaScriptFromString: jsString];
744+ if ([self .webView respondsToSelector: @selector (stringByEvaluatingJavaScriptFromString: )]) {
745+ [self .webView performSelector: @selector (stringByEvaluatingJavaScriptFromString: ) withObject: jsString];
746+ } else if ([self .webView respondsToSelector: @selector (evaluateJavaScript:completionHandler: )]) {
747+ [self .webView performSelector: @selector (evaluateJavaScript:completionHandler: ) withObject: jsString withObject: nil ];
748+ }
718749}
719750
720751- (void ) didChangeActiveLevel : (GMSIndoorLevel *)activeLevel {
@@ -746,7 +777,11 @@ - (void) didChangeActiveLevel: (GMSIndoorLevel *)activeLevel {
746777 encoding: NSUTF8StringEncoding];
747778 NSString *jsString = [NSString stringWithFormat: @" javascript:plugin.google.maps.Map._onMapEvent('indoor_level_activated', %@ )" , JSONstring];
748779
749- [self .webView stringByEvaluatingJavaScriptFromString: jsString];
780+ if ([self .webView respondsToSelector: @selector (stringByEvaluatingJavaScriptFromString: )]) {
781+ [self .webView performSelector: @selector (stringByEvaluatingJavaScriptFromString: ) withObject: jsString];
782+ } else if ([self .webView respondsToSelector: @selector (evaluateJavaScript:completionHandler: )]) {
783+ [self .webView performSelector: @selector (evaluateJavaScript:completionHandler: ) withObject: jsString withObject: nil ];
784+ }
750785}
751786
752787
0 commit comments