diff --git a/Jenkinsfile b/Jenkinsfile index c3b718eb..baf9481a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,6 +3,6 @@ buildModule { // defaults: // nodeVersion = '8.2.1' // Must have version set up on Jenkins master before it can be changed - sdkVersion = '7.4.0.v20180829013317' // use a master build with ARM64 support + sdkVersion = '7.4.2.v20181106131718' // use a master build with ARM64 support // androidAPILevel = '23' // if changed, must install on build nodes } diff --git a/android/manifest b/android/manifest index 0dcad03e..70b4ad76 100644 --- a/android/manifest +++ b/android/manifest @@ -2,7 +2,7 @@ # this is your module manifest and used by Titanium # during compilation, packaging, distribution, etc. # -version: 4.3.3 +version: 4.4.0 apiversion: 4 architectures: arm64-v8a armeabi-v7a x86 description: External version of Map module to support new Google Map v2 sdk diff --git a/android/src/ti/map/MapModule.java b/android/src/ti/map/MapModule.java index 87322ab8..07000275 100644 --- a/android/src/ti/map/MapModule.java +++ b/android/src/ti/map/MapModule.java @@ -41,6 +41,8 @@ public class MapModule extends KrollModule public static final String PROPERTY_SHOW_INFO_WINDOW = "showInfoWindow"; public static final String PROPERTY_USER_LOCATION_BUTTON = "userLocationButton"; public static final String PROPERTY_COMPASS_ENABLED = "compassEnabled"; + public static final String PROPERTY_SCROLL_ENABLED = "scrollEnabled"; + public static final String PROPERTY_ZOOM_ENABLED = "zoomEnabled"; public static final String PROPERTY_MAP_TOOLBAR_ENABLED = "mapToolbarEnabled"; public static final String PROPERTY_PADDING = "padding"; public static final String PROPERTY_TILT = "tilt"; diff --git a/android/src/ti/map/PolygonProxy.java b/android/src/ti/map/PolygonProxy.java index 485328a8..63b256a3 100644 --- a/android/src/ti/map/PolygonProxy.java +++ b/android/src/ti/map/PolygonProxy.java @@ -84,7 +84,7 @@ public boolean handleMessage(Message msg) } case MSG_SET_STROKE_WIDTH: { result = (AsyncResult) msg.obj; - polygon.setStrokeWidth((Float) result.getArg()); + polygon.setStrokeWidth((float) result.getArg()); result.setResult(null); return true; } @@ -96,7 +96,7 @@ public boolean handleMessage(Message msg) } case MSG_SET_ZINDEX: { result = (AsyncResult) msg.obj; - polygon.setZIndex((Float) result.getArg()); + polygon.setZIndex((float) result.getArg()); result.setResult(null); return true; } diff --git a/android/src/ti/map/TiUIMapView.java b/android/src/ti/map/TiUIMapView.java index 607960c2..691b81b9 100644 --- a/android/src/ti/map/TiUIMapView.java +++ b/android/src/ti/map/TiUIMapView.java @@ -7,8 +7,17 @@ package ti.map; +import org.json.JSONObject; +import org.json.JSONArray; +import org.json.JSONTokener; + +import org.json.JSONException; + +import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; +import java.io.ByteArrayOutputStream; import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollProxy; @@ -19,6 +28,7 @@ import org.appcelerator.titanium.util.TiConvert; import org.appcelerator.titanium.view.TiUIFragment; import org.appcelerator.titanium.TiApplication; +import org.appcelerator.titanium.io.TiFileFactory; import ti.map.Shape.Boundary; import ti.map.Shape.IShape; @@ -280,6 +290,12 @@ public void processMapProperties(KrollDict d) if (d.containsKey(MapModule.PROPERTY_COMPASS_ENABLED)) { setCompassEnabled(TiConvert.toBoolean(d, MapModule.PROPERTY_COMPASS_ENABLED, true)); } + if (d.containsKey(MapModule.PROPERTY_SCROLL_ENABLED)) { + setScrollEnabled(TiConvert.toBoolean(d, MapModule.PROPERTY_SCROLL_ENABLED, true)); + } + if (d.containsKey(MapModule.PROPERTY_ZOOM_ENABLED)) { + setZoomEnabled(TiConvert.toBoolean(d, MapModule.PROPERTY_ZOOM_ENABLED, true)); + } if (d.containsKey(TiC.PROPERTY_STYLE)) { setStyle(d.getString(TiC.PROPERTY_STYLE)); } @@ -314,6 +330,10 @@ public void propertyChanged(String key, Object oldValue, Object newValue, KrollP updateAnnotations((Object[]) newValue); } else if (key.equals(MapModule.PROPERTY_COMPASS_ENABLED)) { setCompassEnabled(TiConvert.toBoolean(newValue, true)); + } else if (key.equals(MapModule.PROPERTY_SCROLL_ENABLED)) { + setScrollEnabled(TiConvert.toBoolean(newValue, true)); + } else if (key.equals(MapModule.PROPERTY_ZOOM_ENABLED)) { + setZoomEnabled(TiConvert.toBoolean(newValue, true)); } else if (key.equals(TiC.PROPERTY_ENABLE_ZOOM_CONTROLS)) { setZoomControlsEnabled(TiConvert.toBoolean(newValue, true)); } else if (key.equals(TiC.PROPERTY_STYLE)) { @@ -332,14 +352,31 @@ public GoogleMap getMap() protected void setStyle(String style) { - if (map != null && style != null && style != "") { + if (map != null && style != null && !style.isEmpty()) { try { + // Handle .json files + if (style.endsWith(".json")) { + Object json = new JSONTokener(loadJSONFromAsset(style)).nextValue(); + + if (json instanceof JSONObject) { + style = ((JSONObject)json).toString(); + } else if (json instanceof JSONArray) { + style = ((JSONArray)json).toString(); + } else { + Log.e(TAG, "Invalid JSON style."); + } + } + + // Handle raw JSON boolean success = map.setMapStyle(new MapStyleOptions(style)); + if (!success) { - Log.e("MapsActivityRaw", "Style parsing failed."); + Log.e(TAG, "Style parsing failed."); } } catch (Resources.NotFoundException e) { - Log.e("MapsActivityRaw", "Can't find style.", e); + Log.e(TAG, "Cannot find JSON style", e); + } catch (JSONException e) { + Log.e(TAG, "Cannot parse JSON", e); } } } @@ -423,6 +460,32 @@ protected void setPadding(int left, int top, int right, int bottom) } } + protected void showAnnotations(Object[] annotations) { + ArrayList markers = new ArrayList(); + + // Use supplied annotations first. If none available, select all (parity with iOS) + if (annotations != null) { + for (int i = 0; i < annotations.length; i++) { + Object annotation = annotations[i]; + if (annotation instanceof AnnotationProxy) { + markers.add(((AnnotationProxy) annotation).getTiMarker()); + } + } + } else { + markers = timarkers; + } + + LatLngBounds.Builder builder = new LatLngBounds.Builder(); + for (TiMarker marker : markers) { + builder.include(marker.getPosition()); + } + LatLngBounds bounds = builder.build(); + + int padding = 30; + CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding); + map.animateCamera(cu); + } + protected void setZoomControlsEnabled(boolean enabled) { if (map != null) { @@ -430,6 +493,20 @@ protected void setZoomControlsEnabled(boolean enabled) } } + protected void setScrollEnabled(boolean enabled) + { + if (map != null) { + map.getUiSettings().setScrollGesturesEnabled(enabled); + } + } + + protected void setZoomEnabled(boolean enabled) + { + if (map != null) { + map.getUiSettings().setZoomGesturesEnabled(enabled); + } + } + public void updateCamera(HashMap dict) { double longitude = 0; @@ -936,6 +1013,31 @@ public void firePinChangeDragStateEvent(Marker marker, AnnotationProxy annoProxy } } + private String loadJSONFromAsset(String filename) + { + String json = null; + + try { + String url = proxy.resolveUrl(null, filename); + InputStream inputStream = TiFileFactory.createTitaniumFile(new String[] { url }, false).getInputStream(); + ByteArrayOutputStream result = new ByteArrayOutputStream(); + byte[] buffer = new byte[4096]; + int length; + + while ((length = inputStream.read(buffer)) != -1) { + result.write(buffer, 0, length); + } + + json = result.toString("UTF-8"); + inputStream.close(); + result.close(); + } catch (IOException ex) { + Log.e(TAG, "Error opening file: " + ex.getMessage()); + } + + return json; + } + @Override public boolean onMarkerClick(Marker marker) { diff --git a/android/src/ti/map/ViewProxy.java b/android/src/ti/map/ViewProxy.java index abaa7d06..e2b73048 100644 --- a/android/src/ti/map/ViewProxy.java +++ b/android/src/ti/map/ViewProxy.java @@ -30,7 +30,8 @@ propertyAccessors = { TiC.PROPERTY_USER_LOCATION, MapModule.PROPERTY_USER_LOCATION_BUTTON, TiC.PROPERTY_MAP_TYPE, TiC.PROPERTY_REGION, TiC.PROPERTY_ANNOTATIONS, TiC.PROPERTY_ANIMATE, MapModule.PROPERTY_TRAFFIC, TiC.PROPERTY_STYLE, TiC.PROPERTY_ENABLE_ZOOM_CONTROLS, - MapModule.PROPERTY_COMPASS_ENABLED, MapModule.PROPERTY_POLYLINES }) + MapModule.PROPERTY_COMPASS_ENABLED, MapModule.PROPERTY_SCROLL_ENABLED, MapModule.PROPERTY_ZOOM_ENABLED, + MapModule.PROPERTY_POLYLINES }) public class ViewProxy extends TiViewProxy implements AnnotationDelegate { private static final String TAG = "MapViewProxy"; @@ -53,6 +54,7 @@ public class ViewProxy extends TiViewProxy implements AnnotationDelegate private static final int MSG_SNAP_SHOT = MSG_FIRST_ID + 513; private static final int MSG_SET_PADDING = MSG_FIRST_ID + 514; private static final int MSG_ZOOM = MSG_FIRST_ID + 515; + private static final int MSG_SHOW_ANNOTATIONS = MSG_FIRST_ID + 516; private static final int MSG_ADD_POLYGON = MSG_FIRST_ID + 901; private static final int MSG_REMOVE_POLYGON = MSG_FIRST_ID + 902; @@ -82,6 +84,8 @@ public ViewProxy() super(); preloadRoutes = new ArrayList(); defaultValues.put(MapModule.PROPERTY_COMPASS_ENABLED, true); + defaultValues.put(MapModule.PROPERTY_SCROLL_ENABLED, true); + defaultValues.put(MapModule.PROPERTY_ZOOM_ENABLED, true); preloadPolygons = new ArrayList(); preloadPolylines = new ArrayList(); preloadCircles = new ArrayList(); @@ -304,6 +308,13 @@ public boolean handleMessage(Message msg) return true; } + case MSG_SHOW_ANNOTATIONS: { + result = ((AsyncResult) msg.obj); + handleShowAnnotations((Object[]) result.getArg()); + result.setResult(null); + return true; + } + default: { return super.handleMessage(msg); } @@ -404,6 +415,28 @@ private void handleSnapshot() } } + @Kroll.method + public void showAnnotations(Object annotations) { + if (TiApplication.isUIThread()) { + handleShowAnnotations(annotations); + } else { + getMainHandler().obtainMessage(MSG_SHOW_ANNOTATIONS).sendToTarget(); + } + } + + private void handleShowAnnotations(Object annotations) { + if (!(annotations instanceof Object[])) { + Log.e(TAG, "Invalid argument to addAnnotations", Log.DEBUG_MODE); + return; + } + Object[] annos = (Object[]) annotations; + + TiUIMapView mapView = (TiUIMapView) peekView(); + if (mapView.getMap() != null) { + mapView.showAnnotations(annos); + } + } + @Kroll.method public void removeAllAnnotations() { diff --git a/anvil/configSet/Resources/hammer.js b/anvil/configSet/Resources/hammer.js deleted file mode 100644 index bb73e34a..00000000 --- a/anvil/configSet/Resources/hammer.js +++ /dev/null @@ -1,62 +0,0 @@ -var hammer = module.exports; -var os = Ti.Platform.osname; - -function shouldRunOnPlatform(prop) { - return !prop.hasOwnProperty('platforms') || prop.platforms[os]; -} - -// Suites can be filtered based on platform by adding a 'platform' property to a suite entry. This allows for -// controlling which platforms a particular tests suite is valid to run on. -// -// Examples: -// var testSuites = [ -// { name: suite1, platforms: { iphone:1, ipad:1 } }, // valid on iphone and ipad -// { name: suite2 }, // valid on all platforms -// { name: suite3, platforms: { android:1, mobileweb:1 } // valid on android and mobileweb - -hammer.populateSuites = function (testSuites) { - var result = []; - var len = testSuites.length; - for (var i = 0; i < len; i++) { - if (shouldRunOnPlatform(testSuites[i])) { - result.push({ name:testSuites[i].name }); - } - } - - return result; -}; - - -// Convention: A recognized test method starts with 'test' and is followed by an uppercase character, a number, or an -// underscore. Use this technique to have your list of tests automatically populated to avoid typos in filling out -// the list of test functions. -// -// Examples: -// this.testModule -// this.test_Module -// this.test1 -// -// Tests can be filtered based on platform by adding a 'platform' property to the function. This allows for -// controlling which platforms a particular test is run on, if necessary. -// Examples: -// this.testModule = function (testRun) {....}; -// this.testModule.platforms = { android:1, iphone:1, ipad:1 }; // only run on android and iOS -// this.testModule.platforms = { mobileweb:1 }; // only run on mobileweb - -hammer.populateTests = function (obj, timeout) { - var result = []; - var re = new RegExp("^test[A-Z_0-9]"); - for (var key in obj) { - if ((typeof obj[key] === "function") && - re.test(key) && - shouldRunOnPlatform(obj[key])) { - var test = { name:key }; - if (timeout) { - test.timeout = timeout; - } - result.push(test); - } - } - - return result; -}; \ No newline at end of file diff --git a/anvil/configSet/Resources/suites/map.js b/anvil/configSet/Resources/suites/map.js deleted file mode 100644 index d0105a42..00000000 --- a/anvil/configSet/Resources/suites/map.js +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Appcelerator Titanium Mobile - * Copyright (c) 2011-2013 by Appcelerator, Inc. All Rights Reserved. - * Licensed under the terms of the Apache Public License - * Please see the LICENSE included with this distribution for details. - */ - -module.exports = new function () -{ - var finish; - var valueOf; - var Map; - - var IOS = (Ti.Platform.osname === 'iphone' || Ti.Platform.osname === 'ipad'); - var ANDROID = (Ti.Platform.osname === 'android'); - var IOS7 = (function() { - if (Titanium.Platform.name == 'iPhone OS') - { - var version = Titanium.Platform.version.split("."); - var major = parseInt(version[0],10); - - if (major >= 7) - { - return true; - } - } - return false; - })(); - - this.init = function (testUtils) - { - finish = testUtils.finish; - valueOf = testUtils.valueOf; - Map = require('ti.map'); - }; - - this.name = "map"; - - // --------------------------------------------------------------- - // Map - // --------------------------------------------------------------- - - // Test that module is loaded - this.testModule = function (testRun) - { - // Verify that the module is defined - valueOf(testRun, Map).shouldBeObject(); - finish(testRun); - }; - - // Test that all of the Constants are defined - this.testConstants = function (testRun) - { - // Annotation - valueOf(testRun, Map.ANNOTATION_DRAG_STATE_START).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_DRAG_STATE_END).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_GREEN).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_RED).shouldBeNumber(); - - // Map Type - valueOf(testRun, Map.SATELLITE_TYPE).shouldBeNumber(); - valueOf(testRun, Map.NORMAL_TYPE).shouldBeNumber(); - valueOf(testRun, Map.HYBRID_TYPE).shouldBeNumber(); - - if (IOS) { - // Annotation - valueOf(testRun, Map.ANNOTATION_DRAG_STATE_NONE).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_DRAG_STATE_DRAG).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_DRAG_STATE_CANCEL).shouldBeNumber(); - - valueOf(testRun, Map.ANNOTATION_PURPLE).shouldBeNumber(); - } - - if (ANDROID) { - // Annotation - valueOf(testRun, Map.ANNOTATION_BLUE).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_AZURE).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_CYAN).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_MAGENTA).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_ORANGE).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_ROSE).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_YELLOW).shouldBeNumber(); - valueOf(testRun, Map.ANNOTATION_VIOLET).shouldBeNumber(); - - // Map Type - valueOf(testRun, Map.TERRAIN_TYPE).shouldBeNumber(); - - // Google Play - valueOf(testRun, Map.SUCCESS).shouldBeNumber(); - valueOf(testRun, Map.SERVICE_MISSING).shouldBeNumber(); - valueOf(testRun, Map.SERVICE_VERSION_UPDATE_REQUIRED).shouldBeNumber(); - valueOf(testRun, Map.SERVICE_DISABLED).shouldBeNumber(); - valueOf(testRun, Map.SERVICE_INVALID).shouldBeNumber(); - } - - finish(testRun); - }; - - // Test that all of the Functions are defined - this.testFunctions = function (testRun) - { - valueOf(testRun, Map.createView).shouldBeFunction(); - - if (IOS7) { - valueOf(testRun, Map.createCamera).shouldBeFunction(); - } - - if (ANDROID) { - valueOf(testRun, Map.createRoute).shouldBeFunction(); - } - - finish(testRun); - }; - - // Populate the array of tests based on the 'hammer' convention - this.tests = require('hammer').populateTests(this); -}; diff --git a/anvil/configSet/configs/map/app.js b/anvil/configSet/configs/map/app.js deleted file mode 100644 index 25437517..00000000 --- a/anvil/configSet/configs/map/app.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Appcelerator Titanium Mobile - * Copyright (c) 2011-2012 by Appcelerator, Inc. All Rights Reserved. - * Licensed under the terms of the Apache Public License - * Please see the LICENSE included with this distribution for details. - */ - -var testSuites = [ - { name: "map" } -] ; -var suites = require('hammer').populateSuites(testSuites); - -/* -these lines must be present and should not be modified. "suites" argument to setSuites is -expected to be an array (should be an empty array at the very least in cases where population of -the suites argument is based on platform type and may result in no valid suites being added to the -argument) -*/ -var init = require("init"); -init.setSuites(suites); -init.start(); \ No newline at end of file diff --git a/anvil/configSet/configs/map/example_tiapp.xml b/anvil/configSet/configs/map/example_tiapp.xml deleted file mode 100644 index 35677c92..00000000 --- a/anvil/configSet/configs/map/example_tiapp.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - com.appcelerator.harness - harness - 1.0 - not specified - not specified - not specified - not specified - appicon.png - false - false - default - false - false - false - false - - system - - - Ti.UI.PORTRAIT - - - Ti.UI.PORTRAIT - Ti.UI.UPSIDE_PORTRAIT - Ti.UI.LANDSCAPE_LEFT - Ti.UI.LANDSCAPE_RIGHT - - - - - - - true - true - - default - - - ti.map - ti.map - - diff --git a/anvil/configSet/name.txt b/anvil/configSet/name.txt deleted file mode 100644 index e9589e4a..00000000 --- a/anvil/configSet/name.txt +++ /dev/null @@ -1 +0,0 @@ -map \ No newline at end of file diff --git a/apidoc/View.yml b/apidoc/View.yml index 63b67601..22421855 100644 --- a/apidoc/View.yml +++ b/apidoc/View.yml @@ -189,15 +189,16 @@ methods: - name: showAnnotations summary: | Sets the visible region so that the map displays the specified annotations. If no array is passed - annotations on the map will be shown. + annotations on the map will be shown. The default padding of 20px is applied and can be changed by + using the property. parameters: - name: annotations summary: | An array of to display. type: Array optional: true - since: "3.2.0" - platforms: [iphone, ipad] + since: { android: "8.0.0", iphone: "3.2.0", ipad: "3.2.0" } + platforms: [iphone, ipad, android] - name: addPolygon summary: Adds a new polygon to the map. @@ -764,8 +765,8 @@ properties: When this property is set to `true` the a map view can be panned or scrolled by dragging the map view. type: Boolean default: true - since: "7.2.0" - platforms: [iphone, ipad] + since: { android: "8.0.0", iphone: "7.2.0", ipad: "7.2.0" } + platforms: [iphone, ipad, android] - name: showsBuildings summary: A Boolean indicating whether the map displays extruded building information. @@ -840,8 +841,8 @@ properties: out can also be accomplished by two-finger tapping the map view. type: Boolean default: true - since: "7.2.0" - platforms: [iphone, ipad] + since: { android: "8.0.0", iphone: "7.2.0", ipad: "7.2.0" } + platforms: [iphone, ipad, android] - name: indoorEnabled summary: A Boolean value indicating whether the indoor mapping is enabled. diff --git a/ios/Classes/TiMapView.h b/ios/Classes/TiMapView.h index 9840dd83..a57ec55d 100644 --- a/ios/Classes/TiMapView.h +++ b/ios/Classes/TiMapView.h @@ -62,6 +62,7 @@ - (void)animateCamera:(id)args; - (void)showAnnotations:(id)args; +- (void)showAllAnnotations:(id)value; - (void)addAnnotation:(id)args; - (void)addAnnotations:(id)args; - (void)setAnnotations_:(id)value; diff --git a/ios/Classes/TiMapView.m b/ios/Classes/TiMapView.m index 137cd377..4ed9bf25 100644 --- a/ios/Classes/TiMapView.m +++ b/ios/Classes/TiMapView.m @@ -834,6 +834,18 @@ - (void)setShowsTraffic_:(id)value } } +- (void)showAllAnnotations:(id)value +{ + MKMapRect zoomRect = MKMapRectNull; + for (id annotation in self.map.annotations) + { + MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate); + MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1); + zoomRect = MKMapRectUnion(zoomRect, pointRect); + } + [self.map setVisibleMapRect:zoomRect animated:YES]; +} + - (void)setPadding_:(id)value { TiThreadPerformOnMainThread(^{ diff --git a/ios/Classes/TiMapViewProxy.h b/ios/Classes/TiMapViewProxy.h index c9018229..66a4ba0e 100644 --- a/ios/Classes/TiMapViewProxy.h +++ b/ios/Classes/TiMapViewProxy.h @@ -41,6 +41,8 @@ - (void)removeAnnotation:(id)args; - (void)removeAnnotations:(id)args; - (void)removeAllAnnotations:(id)args; +- (void)showAnnotations:(id)args; +- (void)showAllAnnotations:(id)unused; - (void)selectAnnotation:(id)args; - (void)deselectAnnotation:(id)args; - (void)zoom:(id)args; diff --git a/ios/Classes/TiMapViewProxy.m b/ios/Classes/TiMapViewProxy.m index b651b04a..4113cba9 100644 --- a/ios/Classes/TiMapViewProxy.m +++ b/ios/Classes/TiMapViewProxy.m @@ -853,6 +853,14 @@ - (void)animateCamera:(id)args NO); } +- (void)showAllAnnotations:(id)unused +{ + TiThreadPerformOnMainThread(^{ + [(TiMapView *)[self view] showAllAnnotations:unused]; + }, + NO); +} + - (void)showAnnotations:(id)args { TiThreadPerformOnMainThread(^{ diff --git a/ios/manifest b/ios/manifest index cf629f47..2cfd8da1 100644 --- a/ios/manifest +++ b/ios/manifest @@ -2,7 +2,7 @@ # this is your module manifest and used by Titanium # during compilation, packaging, distribution, etc. # -version: 3.1.2 +version: 3.2.0 apiversion: 2 architectures: armv7 arm64 i386 x86_64 description: External version of Map module diff --git a/ios/titanium.xcconfig b/ios/titanium.xcconfig index 21cd9062..926d9c33 100644 --- a/ios/titanium.xcconfig +++ b/ios/titanium.xcconfig @@ -4,7 +4,7 @@ // OF YOUR TITANIUM SDK YOU'RE BUILDING FOR // // -TITANIUM_SDK_VERSION = 6.1.2.GA +TITANIUM_SDK_VERSION = 7.5.0.GA //