{ "id": "169425", "key": "TIMOB-25076", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "19906", "description": "", "name": "Release 6.3.0", "archived": false, "released": true, "releaseDate": "2017-11-01" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2017-10-02T13:45:03.000+0000", "created": "2017-08-08T19:56:19.000+0000", "epic": { "id": 168100, "key": "TIMOB-24772", "name": "iOS: Support iOS 11 / Xcode 9", "summary": "iOS: Add support for iOS 11 and Xcode 9", "color": { "key": "color_1" }, "done": false }, "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-11-08T19:28:02.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "MapKit in iOS 11 adds support for marker-annotations, annotation-clustering and more. We should add those API's to our existing Ti.Map module. Here are some important API's to cover:\r\n- Marker annotations (MKMarkerAnnotationView)\r\n - We need to find a way to integrate these into the current ti.map logic. What I thought about is to integrate a \"type\" property into our annotations, so that custom annotation, image annotations, pin-annotations, marker annotations (iOS 11 only) and cluster-annotations (iOS 11 only) have their specific types to identify\r\n - Expose all related properties like glyphText, glyphTintColor and glyphImage\r\n- Annotation clustering\r\n - Includes many components: MKClusterAnnotation, MKAnnotationViewCollisionMode, MKMapViewDefaultClusterAnnotationViewReuseIdentifier, MKFeature*, etc\r\n - Need to work out, what components are used in which context and how we can expose them in a clean and easy way to the developer\r\n- New map-type! MKMapTypeMutedStandard\r\n - Should be exposed as constant (does Android have something similar?), e.g. MAP_TYPE_MUTED_STANDARD", "attachment": [], "flagged": false, "summary": "iOS 11: Add new MapKit API's", "creator": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "closedSprints": [ { "id": 951, "state": "closed", "name": "2017 Sprint 20 SDK", "startDate": "2017-09-24T17:50:18.277Z", "endDate": "2017-10-08T17:50:00.000Z", "completeDate": "2017-10-09T20:38:07.840Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "427616", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Major map apis, which will be expose to developer are -\r\n\r\n1. MarkerAnnotation -\r\n\r\nshowMarker : true/false (whether to show marker, if customview is not there)\r\nmarkerColor: TiColor (set tint color of marker)\r\nmarkerGlyphText: String (set marker's glyph text)\r\nmarkerGlyphColor:TiColor (set marker glyph tint color)\r\nmarkerGlyphImage: Image (set glyphImage)\r\nmarkerSelectedGlyphImage: Image (set selected glyph image)\r\nmarkerAnimatesWhenAdded : Bool\r\n\r\nmarkerTitleVisibility: \r\nmarkerSubtitleVisibility:\r\n\r\nFEATURE_VISIBILITY_ADAPTIVE\r\nFEATURE_VISIBILITY_HIDDEN\r\nFEATURE_VISIBILITY_VISIBLE\r\n\r\n2. Annotation\r\nclusterIdentifier: String (set cluster identifier, which will be used in creating cluster)\r\n\r\nannotationDisplayPriority:\r\nFEATURE_DISPLAY_PRIORITY_REQUIRED\r\nFEATURE_DISPLAY_PRIORITY_DEFAULT_HIGH\r\nFEATURE_DISPLAY_PRIORITY_DEFAULT_LOW\r\n\r\ncollisionMode:\r\nANNOTATION_VIEW_COLLISION_MODE_RECTANGLE\r\nANNOTATION_VIEW_COLLISION_MODE_CIRCLE\r\n\r\n3.Map\r\nMUTED_STANDARD_TYPE (new map type)\r\n\r\n4. MKClusterAnnotation\r\nsetClusterAnnotation({\r\n annotation:param2,\r\n memberAnnotations:param1}) (available for TiMapView)\r\n\r\nparam1 : array of annotations for those cluster annotation is created.\r\nparam2 : annotation to show cluster\r\n For giving custom view to cluster annotation, “clusterannotations” event should be implemented by developer.This will get array of member annotations proxy and map proxy. From this event setClusterView() can be called to set cluster annotation view.\r\n\r\n5. Event-\r\n\"clusteringstarted\"", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-09-06T07:16:49.000+0000", "updated": "2017-09-12T09:46:29.000+0000" }, { "id": "427792", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR- https://github.com/appcelerator-modules/ti.map/pull/212\r\n\r\n\r\n{code:js}\r\n var Map = require('ti.map');\r\n\r\nvar win = Titanium.UI.createWindow({\r\n fullscreen: true,\r\n});\r\nvar createMapIcon = function createMapIconFn(number) {\r\n\r\n var image = Ti.UI.createView({\r\n height: Ti.UI.SIZE,\r\n width: Ti.UI.SIZE,\r\n backgroundColor: 'transparent',\r\n\r\n });\r\n var imageBack = Ti.UI.createView({\r\n height: 34,\r\n width: 34,\r\n borderRadius: 17,\r\n backgroundColor: 'white',\r\n borderColor: 'black',\r\n top: 0,\r\n });\r\n\r\n imageBack.add(Ti.UI.createLabel({\r\n text: number,\r\n color: 'black',\r\n width: Ti.UI.SIZE,\r\n height: Ti.UI.SIZE,\r\n top: 5\r\n\r\n }));\r\n image.add(imageBack);\r\n return image;\r\n};\r\n\r\nvar ann = [];\r\n\r\nfor (var i = 0; i < 10; i++) {\r\n\r\n ann.push(Map.createAnnotation({\r\n clusterIdentifier: 'abc',\r\n collisionMode: Map.ANNOTATION_VIEW_COLLISION_MODE_RECTANGLE,\r\n showMarker: true,\r\n markerGlyphText: i.toString(),\r\n markerColor: 'blue',\r\n markerGlyphColor: 'green',\r\n title: 'Title',\r\n subtitle: 'subtitle',\r\n markerTitleVisibility: Map.FEATURE_VISIBILITY_VISIBLE,\r\n markerSubtitleVisibility: Map.FEATURE_VISIBILITY_HIDDEN,\r\n markerGlyphImage: 'Flag.png',\r\n markerSelectedGlyphImage: 'social-facebook-icon.png',\r\n annotationDisplayPriority: Map.FEATURE_DISPLAY_PRIORITY_DEFAULT_LOW,\r\n draggable: true,\r\n latitude: Math.random() * 10 + 40,\r\n longitude: Math.random() * 10,\r\n }));\r\n}\r\n\r\nvar mapview = Map.createView({\r\n annotations: ann,\r\n bottom: 0,\r\n right: 0,\r\n width: Ti.UI.FILL,\r\n height: Ti.UI.FILL,\r\n rotateEnabled: true,\r\n compassEnabled: true,\r\n showsScale: false,\r\n mapType: Map.MUTED_STANDARD_TYPE,\r\n showsPointsOfInterest: false,\r\n userLocation: true,\r\n\r\n});\r\n\r\nmapview.addEventListener('clusteringstarted', function(e) {\r\n Ti.API.info('clustering started');\r\n var clusterAnnotation = Map.createAnnotation({\r\n customView: createMapIcon(e.memberAnnotations.length),\r\n // showMarker:true,\r\n //markerText:e.memberAnns.length.toString(),\r\n title: 'Title1',\r\n subtitle: 'subtitle1',\r\n });\r\n mapview.setClusterAnnotation({\r\n annotation: clusterAnnotation,\r\n memberAnnotations: e.memberAnnotations\r\n });\r\n});\r\nwin.add(mapview);\r\nwin.open();\r\n{code}", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-09-12T09:49:28.000+0000", "updated": "2017-09-26T11:28:08.000+0000" }, { "id": "428633", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Reopening because of the build-crashes seen in MOD-2365.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-10-02T10:52:20.000+0000", "updated": "2017-10-02T10:52:20.000+0000" }, { "id": "428635", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Resolving as *Fixed* again: I bumped Ti.Map to 3.0.0, made an own release for the selected annotation fix (2.12.2) and updated the 6_3_X and master modules.json to include the 3.0.0 version as part of our iOS 11 release in 6.3.0. cc [~eharris]", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-10-02T13:45:03.000+0000", "updated": "2017-10-02T13:45:03.000+0000" }, { "id": "430304", "author": { "name": "amukherjee", "key": "amukherjee", "displayName": "Abir Mukherjee", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Validated the Map is displayed on iOS 11 device. I also checked that the changes are seen in SDK 6.3.0. Closing ticket.", "updateAuthor": { "name": "amukherjee", "key": "amukherjee", "displayName": "Abir Mukherjee", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-11-08T19:27:55.000+0000", "updated": "2017-11-08T19:27:55.000+0000" } ], "maxResults": 5, "total": 5, "startAt": 0 } } }