{ "id": "171064", "key": "MOD-2440", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10034", "key": "MOD", "name": "Appcelerator Modules", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": null, "resolutiondate": null, "created": "2018-02-08T07:57:25.000+0000", "priority": null, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "updated": "2018-07-25T10:19:46.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "13700", "name": "Map" } ], "description": "This specific app is used already several years. Now it gives the following error and crashes.\r\nTi SDK 6.3\r\nTi.map version 4.0.0 and version 3.3.1 (both crash)\r\nAndroid 7.0\r\nSamsung S7 edge SM-G995F\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n[ERROR] : TiApplication: (main) [794,31938] Sending event: exception on thread: main msg:java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)' on a null object reference; Titanium 6.3.0,2017/10/31 18:13,undefined\r\n[ERROR] : TiApplication: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)' on a null object reference\r\n[ERROR] : TiApplication: \tat ti.map.TiUIMapView.addAnnotation(TiUIMapView.java:440)\r\n[ERROR] : TiApplication: \tat ti.map.TiUIMapView.addAnnotations(TiUIMapView.java:451)\r\n[ERROR] : TiApplication: \tat ti.map.TiUIMapView.updateAnnotations(TiUIMapView.java:460)\r\n[ERROR] : TiApplication: \tat ti.map.TiUIMapView.propertyChanged(TiUIMapView.java:280)\r\n[ERROR] : TiApplication: \tat org.appcelerator.kroll.KrollPropertyChange.fireEvent(KrollPropertyChange.java:21)\r\n[ERROR] : TiApplication: \tat org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1096)\r\n[ERROR] : TiApplication: \tat org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:363)\r\n[ERROR] : TiApplication: \tat ti.map.ViewProxy.handleMessage(ViewProxy.java:249)\r\n[ERROR] : TiApplication: \tat android.os.Handler.dispatchMessage(Handler.java:98)\r\n[ERROR] : TiApplication: \tat android.os.Looper.loop(Looper.java:154)\r\n[ERROR] : TiApplication: \tat android.app.ActivityThread.main(ActivityThread.java:6692)\r\n[ERROR] : TiApplication: \tat java.lang.reflect.Method.invoke(Native Method)\r\n[ERROR] : TiApplication: \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)\r\n[ERROR] : TiApplication: \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)\r\n", "attachment": [], "flagged": false, "summary": "Android: Ti.map crashes when adding / selecting annotations", "creator": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [ { "id": "434230", "author": { "name": "mrahman", "key": "mrahman", "displayName": "Mostafizur Rahman", "active": true, "timeZone": "Asia/Dhaka" }, "body": "Hello [~ray@raymondverbruggen.nl],Thanks for sharing with us. Please create a full reproducible test code, test it with latest TI SDK 7.0.1.GA and let us know. Also, provide detail affected environment. Thanks.\r\nThanks.\r\n", "updateAuthor": { "name": "mrahman", "key": "mrahman", "displayName": "Mostafizur Rahman", "active": true, "timeZone": "Asia/Dhaka" }, "created": "2018-02-08T08:26:50.000+0000", "updated": "2018-02-08T08:26:50.000+0000" }, { "id": "434231", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hello!\r\n\r\nI cannot test with Ti SDK 7, this is an update of an existing app which is in PlayStore. Testing with SDK 7 requires Studio updated to vs 5, which yesterday I had to rollback from because of lots of other problems. I need to update this app only for 2 lines, which cannot take more than 15 minutes.\r\nWhy do suddenly errors occur? The code (21000 lines in total) was retrieved from SVN from latest version which is in PlayStore.\r\n\r\nWhat do you mean with \"detail affected document\"?\r\n\r\nThank you.", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T08:34:24.000+0000", "updated": "2018-02-08T08:34:24.000+0000" }, { "id": "434233", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hello!\r\n\r\nI cannot test with SDK7 because of the following:\r\n\r\n[ERROR] : Found incompatible Titanium Modules:\r\n[ERROR] : id: com.logicallabs.bluetoothle\t version: 1.2.9\t platform: android\t min sdk: 6.1.0.GA\r\n[ERROR] : id: com.logicallabs.bluetoothle\t version: 1.2.8\t platform: android\t min sdk: 3.1.0.GA\r\n[ERROR] : id: com.logicallabs.bluetoothle\t version: 1.2.10\t platform: android\t min sdk: 6.1.0.GA\r\n[ERROR] : id: com.mirasense.scanditsdk\t version: 5.3.3\t platform: android\t min sdk: 6.0.0.GA\r\n[ERROR] : id: com.mirasense.scanditsdk\t version: 5.3.1\t platform: android\t min sdk: 6.0.0.GA\r\n[ERROR] : id: com.mirasense.scanditsdk\t version: 5.0.1\t platform: android\t min sdk: 6.0.0.GA\r\n[ERROR] : id: com.mirasense.scanditsdk\t version: 4.15.0\t platform: android\t min sdk: 2.1.0.GA\r\n[ERROR] : id: com.mirasense.scanditsdk\t version: 1.1.2\t platform: android\t min sdk: 2.1.0.GA", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T08:53:21.000+0000", "updated": "2018-02-08T08:53:21.000+0000" }, { "id": "434235", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Also I got this message:\r\n\r\n[WARN] : Building with Android SDK API 26 which hasn't been tested against Titanium SDK 7.0.1\r\n\r\nThis is not in line with the Titanium Compatibility matrix...\r\n\r\n\r\nSo I changed to 25:\r\n\r\nUpdate the android:targetSdkVersion in the tiapp.xml or custom AndroidManifest to at least 25:\r\n\r\n \r\n[ERROR] : The target SDK API version must be 25 or newer\r\n \r\n \r\n \r\n \r\n", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T08:59:30.000+0000", "updated": "2018-02-08T08:59:30.000+0000" }, { "id": "434238", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "The latest Android one is 4.1.1 (currently in beta, fixing leaks as well), see the [releases|https://github.com/appcelerator-modules/ti.map/releases] for details. You might want to rebuild the version for SDK 6.x, but as SDK 7 resolved all issues regarding google play-services from the past, you may need to re-include the play-services. [~gmathews] where are we with 4.1.1? I think MOD-2378 is the related ticket.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T10:56:16.000+0000", "updated": "2018-02-08T10:56:16.000+0000" }, { "id": "434246", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Found out that it no longer crashes when I do not add annotations.\r\nAny idea why? It worked perfectly fine for several years...\r\n\r\n@Hans Knochel, do you think it has to do with play-services?", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T13:04:16.000+0000", "updated": "2018-02-08T13:04:16.000+0000" }, { "id": "434251", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Yeah, then it's definitely the fix in 4.1.1. I think the issue wasn't there in earlier versions because it was triggered by a PR supporting blob images inside annotation (community one). I can try to rebuild it for you without play-services.\r\n\r\n*EDIT*: Have fun: https://github.com/hansemannn/ti.map/releases/tag/android-3.3.2", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T14:09:15.000+0000", "updated": "2018-02-08T14:20:35.000+0000" }, { "id": "434256", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "I tested without images in annotations, so only text but it still crashes.\r\n\r\nYes if you can make the Ti.map module so that it works for SDK 6.3.0 that would be superrrrr :)\r\n\r\nDon't know why but SDK 7 finds incompatible Titanium Modules:\r\n[ERROR] : id: com.logicallabs.bluetoothle\tversion: 1.2.9\tplatform: android\tmin sdk: 6.1.0.GA\r\n[ERROR] : id: com.logicallabs.bluetoothle\tversion: 1.2.8\tplatform: android\tmin sdk: 3.1.0.GA\r\n[ERROR] : id: com.logicallabs.bluetoothle\tversion: 1.2.10\tplatform: android\tmin sdk: 6.1.0.GA\r\n[ERROR] : id: com.mirasense.scanditsdk\tversion: 5.3.3\tplatform: android\tmin sdk: 6.0.0.GA\r\n[ERROR] : id: com.mirasense.scanditsdk\tversion: 5.3.1\tplatform: android\tmin sdk: 6.0.0.GA\r\n[ERROR] : id: com.mirasense.scanditsdk\tversion: 5.0.1\tplatform: android\tmin sdk: 6.0.0.GA\r\n[ERROR] : id: com.mirasense.scanditsdk\tversion: 4.15.0\tplatform: android\tmin sdk: 2.1.0.GA\r\n[ERROR] : id: com.mirasense.scanditsdk\tversion: 1.1.2\tplatform: android\tmin sdk: 2.1.0.GA\r\n\r\nThis is strange isn't it? Nothing is mentioned in the release notes...\r\n", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T14:22:27.000+0000", "updated": "2018-02-08T14:22:27.000+0000" }, { "id": "434257", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Titanium SDK 7 added 64-Bit support for Android (better performance, Chrome DevTools debugging, ...), requiring native modules to be recompiled like iOS back in SDK 3.5.0. The modules look like third-party modules (com.mirasense.scanditsdk and com.logicallabs.bluetoothle), so they need to provide new versions. All core-modules (ti.map, ti.facebook, ti.touchid, etc.) have been recompiled before the release already.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T14:26:37.000+0000", "updated": "2018-02-08T14:26:37.000+0000" }, { "id": "434258", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Sorry, version 3.3.2 crashes...\r\n\r\n[ERROR] : TiApplication: (main) [970,16238] Sending event: exception on thread: main msg:java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)' on a null object reference; Titanium 6.3.0,2017/10/31 18:13,undefined\r\n[ERROR] : TiApplication: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)' on a null object reference\r\n[ERROR] : TiApplication: \tat ti.map.TiUIMapView.addAnnotation(TiUIMapView.java:440)\r\n[ERROR] : TiApplication: \tat ti.map.TiUIMapView.addAnnotations(TiUIMapView.java:451)\r\n[ERROR] : TiApplication: \tat ti.map.TiUIMapView.updateAnnotations(TiUIMapView.java:460)\r\n[ERROR] : TiApplication: \tat ti.map.TiUIMapView.propertyChanged(TiUIMapView.java:280)\r\n[ERROR] : TiApplication: \tat org.appcelerator.kroll.KrollPropertyChange.fireEvent(KrollPropertyChange.java:21)\r\n[ERROR] : TiApplication: \tat org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1096)\r\n[ERROR] : TiApplication: \tat org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:363)\r\n[ERROR] : TiApplication: \tat ti.map.ViewProxy.handleMessage(ViewProxy.java:258)\r\n[ERROR] : TiApplication: \tat android.os.Handler.dispatchMessage(Handler.java:98)\r\n[ERROR] : TiApplication: \tat android.os.Looper.loop(Looper.java:168)\r\n[ERROR] : TiApplication: \tat android.app.ActivityThread.main(ActivityThread.java:5845)\r\n[ERROR] : TiApplication: \tat java.lang.reflect.Method.invoke(Native Method)\r\n[ERROR] : TiApplication: \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)\r\n[ERROR] : TiApplication: \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)\r\n", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T14:34:55.000+0000", "updated": "2018-02-08T14:34:55.000+0000" }, { "id": "434259", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "This ticket is missing the test-case, can you attach that? Will move to MOD to validate then.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T14:36:59.000+0000", "updated": "2018-02-08T14:36:59.000+0000" }, { "id": "434260", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "All Android modules needed to be updated when SDK6 came along. \r\nIn the SDK7 release notes there is nothing mentioned about that user modules need to be updated.\r\nThe SDK6 release notes had that clearly stated http://docs.appcelerator.com/platform/latest/#!/guide/Titanium_SDK_6.0.0_Changes-section-src-48431315_TitaniumSDK6.0.0Changes-RebuildingAndroidModules. For example the Bluetooth module it took almost a year before an updated module came out. Most of the apps I have developed make use of Bluetooth (in combination with custom electronics). So making such breaking changes is very risky...\r\n\r\nMaybe this is not the correct place to put this but personally I think every developer needs to be able to painless update existing apps. For example the update I am already struggling with the last 2 days is basically a 2-line change, which normally would have taken me 15 minutes to create a new PlayStore update.\r\nDevelopers like me do not have the means for doing big updates. Either in time, money or opportunities. \r\n\r\nCould you please make an official page in the documentation about how to maintain existing apps?\r\nIn terms of CLI, SDK, Nodejs, Studio, Atom, VSCODE etc.\r\nMaybe there is a need to keep parallel installations or scripts to switch toolchains, node versions or whatever.\r\nFor example how can I update or rebuild an app that has been released using SDK 5.5 (I have 3 apps which make use of several SDK6 incompatible modules which will never be updated). \r\n\r\n", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T15:01:32.000+0000", "updated": "2018-02-08T15:01:32.000+0000" }, { "id": "434261", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Sorry Hans, but I cannot add the sources of this app. I have a non-dislosure agreement with my customer, and besides that it is a big amount of lines of code...\r\n\r\nI found this in the log; might be helpful:\r\n\r\n[INFO] : Google Play services is installed.\r\n[ERROR] : MapViewProxy: (KrollRuntimeThread) [36,15268] Unsupported argument type for removeAnnotation\r\n[WARN] : System: ClassLoader referenced unknown path: /data/data/com.google.android.gms/app_chimera/m/00000003/n/armeabi\r\n[INFO] : System: exec(/system/bin/getprop debug.mapview.logs @ com.google.maps.api.android.lib6.common.o.a:33)\r\n[INFO] : I/Google Maps Android API: Google Play services client version: 10298000\r\n[INFO] : I/Google Maps Android API: Google Play services package version: 11975438\r\n\r\n\r\nThis is the part of the source code that makes the difference between crashing and not crashing:\r\nWould that be enough? The line with \"mapview.annotations = annotations;\" makes the diff. When I comment that line the app does not crash.\r\n\r\n\tvar MapModule = require('ti.map');\r\n\r\n\tvar locationPermission = \"android.permission.ACCESS_FINE_LOCATION\";\r\n\tvar hasLocationPermission = Ti.Android.hasPermission(locationPermission);\r\n\tvar permissionsToRequest = [];\r\n\r\n\tif (!hasLocationPermission) {\r\n\t\tpermissionsToRequest.push(locationPermission);\r\n\t}\r\n\tif (permissionsToRequest.length > 0) {\r\n\t\tTi.Android.requestPermissions(permissionsToRequest, function(e) {\r\n\t\t\tif (e.success) {\r\n\t\t\t\tTi.API.info(\"SUCCESS\");\r\n\t\t\t\twin.open();\r\n\t\t\t} else {\r\n\t\t\t\tTi.API.info(\"ERROR: \" + e.error);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// --------------------------------------------------------------------\r\n\t// check if google play services are installed\r\n\t// --------------------------------------------------------------------\r\n\r\n\tif (OS_ANDROID) {\r\n\t\tvar rc = MapModule.isGooglePlayServicesAvailable();\r\n\t\tswitch (rc) {\r\n\t\tcase MapModule.SUCCESS:\r\n\t\t\tTi.API.info('Google Play services is installed.');\r\n\t\t\tbreak;\r\n\t\tcase MapModule.SERVICE_MISSING:\r\n\t\t\talert('Google Play services is missing. Please install Google Play services from the Google Play store.');\r\n\t\t\tbreak;\r\n\t\tcase MapModule.SERVICE_VERSION_UPDATE_REQUIRED:\r\n\t\t\talert('Google Play services is out of date. Please update Google Play services.');\r\n\t\t\tbreak;\r\n\t\tcase MapModule.SERVICE_DISABLED:\r\n\t\t\talert('Google Play services is disabled. Please enable Google Play services.');\r\n\t\t\tbreak;\r\n\t\tcase MapModule.SERVICE_INVALID:\r\n\t\t\talert('Google Play services cannot be authenticated. Reinstall Google Play services.');\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\talert('Unknown error.');\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tvar mapview = MapModule.createView({\r\n\t\tmapType : MapModule.NORMAL_TYPE,\r\n\t\tuserLocation : false,\r\n\t\tanimate : true,\r\n\t\tenableZoomControls : false\r\n\t});\r\n\t$.mapContainer.add(mapview);\r\n\r\n\tmapview.region = {\r\n\t\tlatitude : '51.94067',\r\n\t\tlongitude : '6.48117',\r\n\t\tlatitudeDelta : 4,\r\n\t\tlongitudeDelta : 4\r\n\t};\r\n\r\n\t// all annotations are kept in a database\r\n\tAlloy.Collections.partners = Alloy.createCollection('partners');\r\n\tvar partners = Alloy.Collections.partners;\r\n\r\n\tvar count = 1;\r\n\tvar annotations = [];\r\n\tpartners.fetch({\r\n\t\tsuccess : function() {\r\n\t\t\t_.each(partners.models, function(e) {\r\n\t\t\t\tvar m = e.toJSON();\r\n\r\n\t\t\t\tif ((m.latitude != null) && (m.longitude != null) && (m.latitude != '') && (m.longitude != '')) {\r\n\t\t\t\t\tvar ann = MapModule.createAnnotation({\r\n\t\t\t\t\t\tlatitude : m.latitude,\r\n\t\t\t\t\t\tlongitude : m.longitude,\r\n\t\t\t\t\t\ttitle : m.companyname,\r\n\t\t\t\t\t\tsubtitle : m.postalcode + ' ' + m.town,\r\n\t\t\t\t\t\trightButton : '/images/info.png',\r\n\r\n\t\t\t\t\t\tid : m\t// custom property to uniquely identify this annotation\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (m.mapicon == 1)\r\n\t\t\t\t\t\tann.image = 'images/vb.png';\r\n\t\t\t\t\telse if (m.mapicon == 2)\r\n\t\t\t\t\t\tann.pincolor = MapModule.ANNOTATION_PURPLE;\r\n\t\t\t\t\telse if (m.mapicon == 3)\r\n\t\t\t\t\t\tann.pincolor = MapModule.ANNOTATION_RED;\r\n\r\n\t\t\t\t\tannotations.push(ann);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmapview.annotations = annotations;\r\n\t\t},\r\n\t\terror : function() {\r\n\t\t\tTi.API.error(\"hmm - this is not good!\");\r\n\t\t}\r\n\t});", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T15:10:14.000+0000", "updated": "2018-02-08T15:10:14.000+0000" }, { "id": "434262", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Found this, maybe useful? https://stackoverflow.com/questions/40770073/appcelerator-android-crashes-with-ti-map-module-on-some-devices", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T17:08:05.000+0000", "updated": "2018-02-08T17:08:05.000+0000" }, { "id": "434283", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Good morning Hans, my customer agreed to let me split the 'big' app into a one page app with only the mapview. Would that help you? Then I would like to send that project to you via email or so.\r\n\r\nPlease let me know.\r\nBest regards, Raymond", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-09T08:23:13.000+0000", "updated": "2018-02-09T08:23:13.000+0000" }, { "id": "434286", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Continued testing; it is solved if I do not make an array of annotations first and then add this array to the mapview, but add every annotation to the mapview itself.\r\n\r\nBoth with Ti.map module version 3.3.1 and 3.3.2.\r\n\r\nNo idea why, maybe this helps?", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-09T10:51:49.000+0000", "updated": "2018-02-09T10:51:49.000+0000" }, { "id": "434310", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "body": "Hello, Please peovide a full reproducible code that regenrates the issue. Thanks.", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2018-02-09T21:39:20.000+0000", "updated": "2018-02-09T21:39:20.000+0000" }, { "id": "434620", "author": { "name": "mrahman", "key": "mrahman", "displayName": "Mostafizur Rahman", "active": true, "timeZone": "Asia/Dhaka" }, "body": "Hello [~ray@raymondverbruggen.nl], Just passing a followup here.Are you able to get that sorted out? If not please provide a full reproducible code that regenerates the issue. Please let us know if you need more help with this issue.\r\nRegards
\r\nAxway Appcelerator Support", "updateAuthor": { "name": "mrahman", "key": "mrahman", "displayName": "Mostafizur Rahman", "active": true, "timeZone": "Asia/Dhaka" }, "created": "2018-02-19T05:22:59.000+0000", "updated": "2018-02-19T05:22:59.000+0000" }, { "id": "434692", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hello, good morning!\r\n\r\nIn one of my earlier comments I asked this:\r\n\r\n_Good morning Hans, my customer agreed to let me split the 'big' app into a one page app with only the mapview. Would that help you? Then I would like to send that project to you via email or so._\r\n\r\nPlease let me know if this is possible. I cannot post all files here (especially the database with annotations) because that contains customer sensitive info :)\r\n\r\nBest regards, Raymond", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-21T05:37:27.000+0000", "updated": "2018-02-21T05:37:27.000+0000" }, { "id": "439079", "author": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "body": "I have this error too in a project:\r\n{code:java}\r\n[WARN] W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.model.Marker.remove()' on a null object reference\r\n[WARN] W/System.err: \tat ti.map.TiUIMapView.addAnnotation(TiUIMapView.java:474)\r\n[WARN] W/System.err: \tat ti.map.TiUIMapView.addAnnotations(TiUIMapView.java:489)\r\n[WARN] W/System.err: \tat ti.map.TiUIMapView.updateAnnotations(TiUIMapView.java:498)\r\n[WARN] W/System.err: \tat ti.map.TiUIMapView.propertyChanged(TiUIMapView.java:288)\r\n[WARN] W/System.err: \tat org.appcelerator.kroll.KrollProxy.firePropertyChanged(KrollProxy.java:969)\r\n[WARN] W/System.err: \tat org.appcelerator.kroll.KrollProxy.onPropertyChanged(KrollProxy.java:1058)\r\n[WARN] W/System.err: \tat org.appcelerator.kroll.runtime.v8.V8Function.nativeInvoke(Native Method)\r\n[WARN] W/System.err: \tat org.appcelerator.kroll.runtime.v8.V8Function.callSync(V8Function.java:55)\r\n[WARN] W/System.err: \tat org.appcelerator.kroll.runtime.v8.V8Function.call(V8Function.java:41)\r\n[WARN] W/System.err: \tat ti.modules.titanium.TitaniumModule$Timer.run(TitaniumModule.java:166)\r\n[WARN] W/System.err: \tat android.os.Handler.handleCallback(Handler.java:751)\r\n[WARN] W/System.err: \tat android.os.Handler.dispatchMessage(Handler.java:95)\r\n[WARN] W/System.err: \tat android.os.Looper.loop(Looper.java:173)\r\n[WARN] W/System.err: \tat android.app.ActivityThread.main(ActivityThread.java:6459)\r\n[WARN] W/System.err: \tat java.lang.reflect.Method.invoke(Native Method)\r\n[WARN] W/System.err: \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:938)\r\n[WARN] W/System.err: \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:828)\r\n{code}\r\n\r\nTried ti.map version 4.2.0+\r\n\r\nIt looks like at\r\nhttps://github.com/appcelerator-modules/ti.map/blob/master/android/src/ti/map/TiUIMapView.java#L498\r\n{{tiMarker.getMarker()}} is null but {{tiMarker}} isn't. Guarding this will remove this error but I can't show/hide markers anymore. I have an array of annotations which I filter and use setAnnotations to set them. I'll try to make a test app to reproduce the error and try to find a solution :)", "updateAuthor": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-07-10T07:53:50.000+0000", "updated": "2018-07-10T07:53:50.000+0000" }, { "id": "439093", "author": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "body": "Example: \r\n{code:java}\r\nvar Map = require('ti.map');\r\nvar win = Titanium.UI.createWindow();\r\nvar mapview = Map.createView({\r\n\tbottom: 0,\r\n\tright: 0,\r\n\twidth: Ti.UI.FILL,\r\n\theight: Ti.UI.FILL,\r\n\trotateEnabled: true,\r\n\tmapType: Map.MUTED_STANDARD_TYPE,\r\n\tshowsPointsOfInterest: false,\r\n\tuserLocation: true,\r\n});\r\nvar ann = [];\t// store annotations\r\n\r\nfunction setData() {\r\n\tfor (var i = 0; i < 10; i++) {\r\n\t\tann.push(Map.createAnnotation({\r\n\t\t\ttitle: 'Title',\r\n\t\t\tsubtitle: 'subtitle',\r\n\t\t\tlatitude: Math.random() * 10 + 40,\r\n\t\t\tlongitude: Math.random() * 10,\r\n\t\t}));\r\n\t}\r\n\tmapview.setAnnotations(ann);\r\n}\r\nsetData();\r\n\r\n\r\nvar btn = Ti.UI.createButton({\r\n\ttitle: \"add again\",\r\n\tbottom: 40\r\n});\r\nvar btn2 = Ti.UI.createButton({\r\n\ttitle: \"add new\",\r\n\tbottom: 0\r\n});\r\nvar btn3 = Ti.UI.createButton({\r\n\ttitle: \"set\",\r\n\tbottom: 80\r\n});\r\nbtn.addEventListener(\"click\", function() {\r\n\t// remove and add existing annotation\r\n\tmapview.removeAllAnnotations();\r\n\tmapview.addAnnotation(ann[0]);\r\n})\r\n\r\nbtn2.addEventListener(\"click\", function() {\r\n\t// create new annotation and set it\r\n\tvar anno = Map.createAnnotation({\r\n\t\ttitle: 'Title',\r\n\t\tsubtitle: 'subtitle',\r\n\t\tlatitude: Math.random() * 10 + 40,\r\n\t\tlongitude: Math.random() * 10,\r\n\t})\r\n\tmapview.setAnnotations([anno]);\r\n})\r\n\r\nbtn3.addEventListener(\"click\", function() {\r\n\t// reset existing annotation\r\n\tmapview.setAnnotations([ann[0]]);\r\n})\r\nwin.add(btn);\r\nwin.add(btn2);\r\nwin.add(btn3);\r\nwin.add(mapview);\r\nwin.open();\r\n\r\n{code}\r\n\r\nOnly the button \"Add new\" works. If I add or set an existing icon it will crash.\r\n\r\nAndroid 7 (HTC A9)\r\nTi SDK 7.2.0.GA\r\nTi.Map 4.3.0", "updateAuthor": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-07-10T15:02:49.000+0000", "updated": "2018-07-10T15:02:49.000+0000" }, { "id": "439261", "author": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "updateAuthor": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "created": "2018-07-17T10:42:22.000+0000", "updated": "2018-07-17T10:48:44.000+0000" }, { "id": "439268", "author": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "body": "Thanks [~ybanev]! I wasn't sure if they are related that's why I posted the info here, too and later created an own ticket! I'll keep an eye on both tickets of course.", "updateAuthor": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-07-17T15:44:45.000+0000", "updated": "2018-07-17T15:44:45.000+0000" } ], "maxResults": 23, "total": 23, "startAt": 0 } } }