maplibre / maplibre-native Goto Github PK
View Code? Open in Web Editor NEWMapLibre Native - Interactive vector tile maps for iOS, Android and other platforms.
Home Page: https://maplibre.org
License: BSD 2-Clause "Simplified" License
MapLibre Native - Interactive vector tile maps for iOS, Android and other platforms.
Home Page: https://maplibre.org
License: BSD 2-Clause "Simplified" License
There is a compiler error when building the scheme dynamic
with Xcode.
Tested against:
This same file (NSExpression+MGLAdditions.mm
) compiles fine with Xcode Version 12.4 (12D4e) & Xcode Version 11.7 (11E801a)
Xcode reports Semantic Issue
Comparison of distinct pointer types ('NSString *' and 'Class')
Error in Xcode 12.5 Beta
Other parameters of note:
I haven't been able to find in the repository and/or documentation if there's support for offline vector (and raster too) MBTiles?
I admit I don't know if that was possible in the original Mapbox implementation, so if it wasn't there, it's quite likely it isn't in this project at the moment.
Aside from this, is there any documentation for how to use the library? So far I've seen how to set it up, but not how to interact with it. E.g.: add markers, draw paths, etc.
Thank you in advance and apologies if this isn't the proper place where to ask about this. I'd more than happy to move this question somewhere else.
Using iOS SDK built from the metal-support
-branch, map opens "zoomed in" when bringing front from background, and then updates to correct zoom level. This causes visible flickering.
This doesn't happen with SDK built from master.
metal-support
-branchMap opens to correct zoom level without flickering
Map opens zoomed in, then quickly shows actual zoom level causing flicker.
Following is a video showing the issue with the iOS SDK Demo App, first in normal speed and then slowed down for better view:
Maplibre iOS SDK version: metal-support
-branch commit bae8d18
iOS/macOS versions: iOS 14.4
Device/simulator models: iPhone 11 Simulator
Xcode version: 12.4
Starting a GitHub Project for a Documentation web site for GL Native docs (similar to maplibre/maplibre-gl-js-docs).
Examples of how it could be designed:
or,
or, it could simply be hosted on the branch gh-pages
Tasks
CNAME
, GH-pages, etc)Notes on making docs
Android
make android-javadoc
iOS
Hi, have you considered to add the support for WatchOS? I think it would open a gigantic market of outdoors the possibility to use vector maps on the Watch.
Using binaries built from the metal-support
branch, a Swift UI test application will have a fatal error: Thread 1: signal SIGABRT
. The source of the error is when the Map View constructor is instantiated with frame: .zero
. This fatal error does not happen in non-MetalANGLE builds.
let mapView = MGLMapView(frame: .zero) // .zero is a CGRect convenience
The log
iosapp-swiftui CAMetalLayer ignoring invalid setDrawableSize width=0.000000 height=0.000000
iosapp-swiftui CAMetalLayer ignoring invalid setDrawableSize width=0.000000 height=0.000000
iosapp-swiftui CAMetalLayer ignoring invalid setDrawableSize width=0.000000 height=0.000000
iosapp-swiftui CAMetalLayer ignoring invalid setDrawableSize width=0.000000 height=0.000000
iosapp-swiftui
to facilitate researching the problem. (Not relying on debug symbols)SIGABRT
stops: kakashidinho/metalangle /src/libANGLE/renderer/metal/mtl_resources.mm#L355CGRect
workaroundSwapping out the frame:
to a reasonable initial CGRect
is a reasonable short term workaround. But it also has side effects (unwanted flashing animations).
var frame = CGRect(x: 0, y: 0, width: 10, height: 20)
The docs for the MapView constructor MGLMapView
:
Initializes and returns a newly allocated map view with the specified frame and the default style.
// Workaround
var frame = CGRect(x: 0, y: 0, width: 10, height: 20)
// causes SIGABRT
frame = .zero
let mapView = MGLMapView(frame: frame)
ld: library not found for -lmbgl-core
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Initial Automated UI Tests demo for Xcode
XCTest
with deployment target of iOS 9.0
XCTest
extension for screenshotsmake iproj CI=1
to run in headless mode (for GitHub Actions & Xcode Server Bots)iosapp
bench
while in the iosapp
schemebench
, Write the Benchmark log to the Documents Directory of the Simulator or Device to facilitate testing of many Benchmarking runs and iterations for testing FPS. Useful for Metal versus Open GL testing.iosapp
to facilitate automated testing without an access token nor secrets (for GitHub Actions & Xcode Server Bots).
xcresult
result bundles should be stored (for example, attached as part of a release)xcodebuild
& make test
)Sample Test PNG & MOV
Sample output file saved in .xcresult
MapLibre-Screenshot-Null Island Tiles-iPhone 6s-13.7.png
make ios-test
fails on GitHub Actions at step 12, Line 1318make ios-test
builds fine on a local dev machine.
self-hosted
build.gh-actions
and touch files to change there.self-hosted
builds.SimDevice: iPhone 8, iOS 14.4
Cherry pick from https://github.com/mapbox/mapbox-gl-native-android/pull/470/files
Mapbox 6.0 got an update for this (unfortunately after license change):
๐ Bug fixes
Fixed an issue where symbols flickered when zooming out. (mapbox/mapbox-gl-native#16471, mapbox/mapbox-gl-native-ios/issues/273)
source 1: https://github.com/mapbox/mapbox-gl-native-ios/blob/master/platform/ios/CHANGELOG.md
source 2: mapbox/mapbox-gl-native#16473 (comment)
Found this issue in maplibre-gl-native android as well as ios.
Unfortunately I could not find any original commit in mapbox-gl-native repo for the mentioned fixes. I pretty sure its in the closed code therefore.
Perhaps someone has an idea where to begin for fixing this.
By the way: older versions of mapbox-gl-native-android (e.g. 8.6.7) does not have this issue (not yet tested for older ios versions).
Cherry pick from https://github.com/mapbox/mapbox-gl-native-android/pull/466/files
Hi. There are performance issues that appears when there's any Custom annotation in the current viewpoint on mapview. I guess these issues are critical for anyone who shows Custom annotations on mapview.
They are noticeable even in this simple example from mapbox doc.
Mapbox team fixed them in v6.2.0. These are two issues from mapbox/mapbox-gl-native-ios connected with them:
This commit does not fix the issues I described.
Looks like this hard fork has already made some awesome progress towards addressing long standing issues in the old Mapbox SDK, like offline vector mbtiles, and XCFramework support.
Now that you already support XCFrameworks, supporting Mac Catalyst should be relatively straightforward. Binary components with custom build scripts will need the following additional architectures:
x86_64-apple-ios14.0-macabi
arm64-apple-ios14.0-macabi
You'll need to target macOS 11.0 (for Mac Catalyst / iOS 14.0) or higher for OpenGL ES support.
Cheers!
Create fork of MapBox android plugin and move it under MapLibre
https://github.com/mapbox/mapbox-plugins-android
We need to update the copyright + review legal.
Does this fork also plan to support Qt?
android-v9.4.0
& ios-v5.11.0
released on Mar 12, 2021Using release โ https://github.com/maplibre/maplibre-gl-native/releases/tag/android-v9.4.0
android-v9.4.0
android-v9.2.1
to android-v9.4.0
in the project https://github.com/roblabs/amazon-location-samples/tree/main/mapbox-gl-native-androidandroid-v9.4.0
android-v9.2.1
to android-v9.4.0
in the project https://github.com/roblabs/osm2vectortiles-androidUsing release โ https://github.com/maplibre/maplibre-gl-native/releases/tag/ios-v5.11.0
iosapp
for Simulators & local Wireless devicesios-v5.11.0
5.10.0
to 5.11.0
in the project https://github.com/roblabs/openmaptiles-ios-demoGeography Class.app
to a device5.11.0
. Or something appropriate for your project
While adding MapLibre in Swift Packages to your project, use Up to Next Major: 5.11.0
.
Verify in the Swift Packages Manager that MapboxEvents has been removed
Geography Class running MapLibre 5.11.0
on an iPhone SE
5.11.0
5.10.0
to 5.11.0
in the project https://github.com/roblabs/amazon-location-samples/tree/main/mapbox-gl-native-iospod -h
for guidance. There may be build issues if you do not clear the pod cache.5.11.0
.mapView.attributionButton.isHidden = true
Amazon Location Service Demo.app
to a deviceAfter: MapLibre 5.11.0
Swift Package in AWS
Before: MapLibre 5.10.0
Swift Package in AWS
While adding MapLibre in Swift Packages to your project, use Up to Next Major: 5.11.0
.
Verify in the Swift Packages Manager that MapboxEvents has been removed
I'm getting a crash momentarily after setting .followWithHeading
As soon as you set it, you immediately get:
[Assert] UIView animation API is being called from a background thread. Performing any operation from a background thread on UIView or a subclass is not supported and may result in unexpected and insidious behavior.
Then after a minute or two, you will get:
This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.
Stack:(
0 CoreAutoLayout 0x00000001b16e5548 BFA41672-E375-33C9-8533-AA1936F46191 + 62792
1 CoreAutoLayout 0x00000001b16e5318 BFA41672-E375-33C9-8533-AA1936F46191 + 62232
2 CoreAutoLayout 0x00000001b16e4e78 BFA41672-E375-33C9-8533-AA1936F46191 + 61048
3 CoreAutoLayout 0x00000001b16e0b58 BFA41672-E375-33C9-8533-AA1936F46191 + 43864
4 UIKitCore 0x000000019fe59f9c 3405666F-F281-3F71-BA86-83E5A27AB5B0 + 16932764
5 Mapbox 0x0000000108aa2ea4 -[MGLMapView layoutSubviews] + 72
6 UIKitCore 0x000000019fe6c448 3405666F-F281-3F71-BA86-83E5A27AB5B0 + 17007688
7 QuartzCore 0x00000001a0371f2c ADD890C7-5758-36E3-A0E8-A6DFC67111E0 + 1400620
8 QuartzCore 0x00000001a03784d0 ADD890C7-5758-36E3-A0E8-A6DFC67111E0 + 1426640
9 QuartzCore 0x00000001a0383820 ADD890C7-5758-36E3-A0E8-A6DFC67111E0 + 1472544
10 QuartzCore 0x00000001a02cf160 ADD890C7-5758-36E3-A0E8-A6DFC67111E0 + 733536
11 QuartzCore 0x00000001a02f9324 ADD890C7-5758-36E3-A0E8-A6DFC67111E0 + 906020
12 QuartzCore 0x00000001a02f9b30 ADD890C7-5758-36E3-A0E8-A6DFC67111E0 + 908080
13 libsystem_pthread.dylib 0x00000001e5832110 D5035724-3CF4-33BE-B3C1-4F5502A9130F + 57616
14 libsystem_pthread.dylib 0x00000001e582db98 D5035724-3CF4-33BE-B3C1-4F5502A9130F + 39832
15 libsystem_pthread.dylib 0x00000001e582f8a0 D5035724-3CF4-33BE-B3C1-4F5502A9130F + 47264
16 libsystem_pthread.dylib 0x00000001e582f634 _pthread_wqthread + 416
17 libsystem_pthread.dylib 0x00000001e5832874 start_wqthread + 8
To be very sure I have wrapped the call in a DispatchQueue but it has no imapct.
DispatchQueue.main.async { self.mapboxMap.userTrackingMode = .followWithHeading }
Cherry pick from mapbox/mapbox-gl-native-android#503
Context: I'm working on Python bindings to build a self-hosted static renderer similar to mbgl-renderer
that I built on top of the (now unmaintained?) mapbox-gl-native
NodeJS bindings and was starting to build up a similar FileSource for local mbtiles when I discovered it was already implemented here (thanks!).
I use a somewhat different approach to resolving local mbtiles files to tileJSON and tiles: e.g., "mbtiles://land/{z}/{x}/{y}.pbf"
=> /<mbtiles root path>/land.mbtiles
tile request.
(style JSON example)
though I am open to other alternatives of resolving this that don't require full filesystem paths in the style JSON files; an approach like is used for assets is more appropriate. Style JSON strings are sent by client applications to the static renderer; the root path containing the mbtiles files is set as a property for running the static renderer server.
It looks like the current implementation only resolves absolute file paths? I couldn't find a full request URL or test that would reveal this in the codebase, but from inspection of the code a tile request looks something like /<absolute mbtiles file path>?file={x}/{y}/{z}.pbf
Is there more documentation / examples for this FileSource anywhere?
I'd like to make the following changes to the MBTiles FileSource, but wanted to be sure that the overall direction seems reasonable:
MaptilerFileSource
=> MBTilesFileSource
ResourceOptions
to set root path containing local MBTiles files, similar to asset pathMBTilesFileSource
and a couple small mbtiles files as test fixtures; I don't see that there are any tests now, so it's a bit hard to know if the above changes would break any downstream usage(This is a reminder about 2 performance bugs discovered and discussed in maplibre/maplibre-gl-js#78)
I checked if the sorting-bug is also present in maplibre-gl-native.
This should already be avoiding bug โ1.โ, but bug โ2.โ is still present:
- it can probably be modified to ![...].isConstant()
.
Other instances exist, too: Just look for circleSortKey
, symbolSortKey
, lineSortKey
, fillSortKey
.
For circles and symbols itโs also in the renderer:
Iโm currently not willing (or able) to spend time to send a PR though
At the moment it seems the Android SDK will crash when you provide an invalid access token (defined as it being NULL or not starting with either PK or SK). Since we're not using Mapbox but our own tileset we don't really need a Mapbox token.
Current behaviour
App crashes when not entering a Mapbox token
Expected behaviour
App doesn't crash when leaving an empty Mapbox token
The Mapbox.xcframework
here is missing a slice for arm64 iOS Simulator: https://github.com/maptiler/maplibre-gl-native/releases/download/ios-v5.10.0/Mapbox-5.10.0.zip
For whatever reason arm64 iOS Simulator is already present in MapboxMobileEvents.xcframework
, just not in Mapbox.xcframework
.
Although it doesn't look like you support macOS binaries yet, they'll also need arm64 slices whenever that day comes. I'd suggest just adding macOS support to the existing XCFramework.
Cherry pick from https://github.com/mapbox/mapbox-gl-native-ios/pull/463/files
MapboxGLAndroidSDK:jacocoDebug task randomly fails in CI/CD builds.
From build log:
> Task :MapboxGLAndroidSDK:jacocoDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':MapboxGLAndroidSDK:jacocoDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> java.lang.ExceptionInInitializerError (no error message)
Example: https://github.com/maplibre/maplibre-gl-native/runs/1934842406?check_suite_focus=true
The current platform/macos/README.md
points to the mapbox-gl-native-ios
repo
If I understood correctly the current content of platform/ios/
has been copied from this repo.
Should the same be done for platform/macos/
, from a139216, as mentionned in the root README.md ?
Hey, thank you for the great work of keeping this lib fixed and alive, filed a few PRs in original for improvements so far in the past and them are still there... will plan to send here too so we can have them working.
Was wondering if you have any plan of support cocoapods, having a repo to replace the old lib as framework and avoid any manual build and drag and drop.
Basically build with
make xcframework BUILDTYPE=Release
And catch the dynamic result in a pod?
*** Building scheme "CI" in ios.xcworkspace
Build Failed
Task failed with exit code 65:
this is resulting into failure
We need to rename this repo's primary branch to main
as described in https://github.com/github/renaming . I could do it myself but only after other contributors are made aware of it. Thx!
Xcode has a set of tools with excellent documentation on how to Optimize Performance with GPU Counters for measuring performance of our Metal based engine.
Opening this issue for any Game Developers or teams that want to aid in measuring the performance of the MapLibre solution.
Items to review
Measuring FPS on a device with the MapLibre Swift UI app iosapp-swiftui
Mapbox have a set of Flutter bindings to Mapbox GL Native: https://github.com/tobrun/flutter-mapbox-gl
It began life as an official Mapbox repo. It's now "community driven and is not an official Mapbox product... we welcome feedback and contributions". Mapbox devs still appear to be active in the project: there's a project status discussion at flutter-mapbox-gl/maps#517
It would be good to have Flutter bindings for MapLibre. The Mapbox bindings are still BSD-licensed, so it should be possible to base them off the latest version, obviously without bindings to any post-licence change MBGL features.
Putting this here as a placeholder and gathering point for now - I may look at this when I need the bindings but obviously won't be disappointed if someone else gets there before me!
Using MapLibre @ v5.11.0
I'm seeing a problem with flickering/flashing labels while the camera is tracking the user's location and moving. I understand #34 was merged and looks to solve a similar problem, but it seems it is still persisting.
Video of the problem:
Example code:
import UIKit
import Mapbox
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let mapView = MGLMapView(frame: view.bounds)
mapView.styleURL = URL(string: "https://your-style.json")!
mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
mapView.showsUserLocation = true
mapView.userTrackingMode = .followWithCourse
view.addSubview(mapView)
}
}
Then set your location to Freeway Drive
in the simulator.
/cc @petr-pokorny-1
Migrating from MapBox to MapLibre, I found that SymbolLayer's PropertyFactory.textField(Expression.get("xxxx") does not work, if set prop for feature, the geomerty and label can not show!
My code as this:
Style.Builder bd = new Style.Builder();
bd.fromJson("{}");
mapboxMap.setStyle(bd, new Style.OnStyleLoaded() {
@Override
public void onStyleLoaded(@NonNull Style style) {
GeoJsonSource source = new GeoJsonSource("mysource");
style.addSource(source);
Layer labelLayer = new SymbolLayer("label-layer","mysource");
labelLayer.setProperties(PropertyFactory.textField(Expression.get("name")),
PropertyFactory.textColor(Color.RED),
PropertyFactory.textSize(18f)
);
JsonObject prop = new JsonObject();
prop.addProperty("name","mytext");
List<Feature> features = new ArrayList<>();
Feature feature = Feature.fromGeometry(Point.fromLngLat(113,21),prop );
features.add(feature);
FeatureCollection featureCollection = FeatureCollection.fromFeatures(features);
source.setGeoJson(featureCollection);
}
});
})
Every time I set the user tracking mode to .followWithHeading I get a crash. I created a bare sample project below that replicated the error. I have tested on iPhone X, and iPad, both on 14.4.1 and both get the crash after a few seconds, maybe 20 at the most.
I am not calling it from a background thread.
https://github.com/paulsUsername/maplibre-error.git
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIView superview]
PID: 9527, TID: 3803024, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x0000000103167fac -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 316
5 Mapbox 0x000000010316a974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
6 libdispatch.dylib 0x00000001067cbce4 _dispatch_call_block_and_release + 24
7 libdispatch.dylib 0x00000001067cd528 _dispatch_client_callout + 16
8 libdispatch.dylib 0x00000001067cfcc4 _dispatch_queue_override_invoke + 888
9 libdispatch.dylib 0x00000001067df048 _dispatch_root_queue_drain + 376
10 libdispatch.dylib 0x00000001067df970 _dispatch_worker_thread2 + 152
11 libsystem_pthread.dylib 0x00000001c9c51568 _pthread_wqthread + 212
12 libsystem_pthread.dylib 0x00000001c9c54874 start_wqthread + 8
2021-03-28 23:01:42.214336+0100 test-123[9527:3803024] [reports] Main Thread Checker: UI API called on a background thread: -[UIView superview]
PID: 9527, TID: 3803024, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x0000000103167fac -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 316
5 Mapbox 0x000000010316a974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
6 libdispatch.dylib 0x00000001067cbce4 _dispatch_call_block_and_release + 24
7 libdispatch.dylib 0x00000001067cd528 _dispatch_client_callout + 16
8 libdispatch.dylib 0x00000001067cfcc4 _dispatch_queue_override_invoke + 888
9 libdispatch.dylib 0x00000001067df048 _dispatch_root_queue_drain + 376
10 libdispatch.dylib 0x00000001067df970 _dispatch_worker_thread2 + 152
11 libsystem_pthread.dylib 0x00000001c9c51568 _pthread_wqthread + 212
12 libsystem_pthread.dylib 0x00000001c9c54874 start_wqthread + 8
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIView bounds]
PID: 9527, TID: 3803024, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x0000000103168024 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 436
5 Mapbox 0x000000010316a974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
6 libdispatch.dylib 0x00000001067cbce4 _dispatch_call_block_and_release + 24
7 libdispatch.dylib 0x00000001067cd528 _dispatch_client_callout + 16
8 libdispatch.dylib 0x00000001067cfcc4 _dispatch_queue_override_invoke + 888
9 libdispatch.dylib 0x00000001067df048 _dispatch_root_queue_drain + 376
10 libdispatch.dylib 0x00000001067df970 _dispatch_worker_thread2 + 152
11 libsystem_pthread.dylib 0x00000001c9c51568 _pthread_wqthread + 212
12 libsystem_pthread.dylib 0x00000001c9c54874 start_wqthread + 8
2021-03-28 23:01:42.334464+0100 test-123[9527:3803024] [reports] Main Thread Checker: UI API called on a background thread: -[UIView bounds]
PID: 9527, TID: 3803024, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x0000000103168024 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 436
5 Mapbox 0x000000010316a974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
6 libdispatch.dylib 0x00000001067cbce4 _dispatch_call_block_and_release + 24
7 libdispatch.dylib 0x00000001067cd528 _dispatch_client_callout + 16
8 libdispatch.dylib 0x00000001067cfcc4 _dispatch_queue_override_invoke + 888
9 libdispatch.dylib 0x00000001067df048 _dispatch_root_queue_drain + 376
10 libdispatch.dylib 0x00000001067df970 _dispatch_worker_thread2 + 152
11 libsystem_pthread.dylib 0x00000001c9c51568 _pthread_wqthread + 212
12 libsystem_pthread.dylib 0x00000001c9c54874 start_wqthread + 8
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIView setCenter:]
PID: 9527, TID: 3803024, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x0000000103103b00 -[MGLAnnotationView setCenter:] + 72
5 Mapbox 0x0000000103168138 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 712
6 Mapbox 0x000000010316a974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
7 libdispatch.dylib 0x00000001067cbce4 _dispatch_call_block_and_release + 24
8 libdispatch.dylib 0x00000001067cd528 _dispatch_client_callout + 16
9 libdispatch.dylib 0x00000001067cfcc4 _dispatch_queue_override_invoke + 888
10 libdispatch.dylib 0x00000001067df048 _dispatch_root_queue_drain + 376
11 libdispatch.dylib 0x00000001067df970 _dispatch_worker_thread2 + 152
12 libsystem_pthread.dylib 0x00000001c9c51568 _pthread_wqthread + 212
13 libsystem_pthread.dylib 0x00000001c9c54874 start_wqthread + 8
2021-03-28 23:01:42.464651+0100 test-123[9527:3803024] [reports] Main Thread Checker: UI API called on a background thread: -[UIView setCenter:]
PID: 9527, TID: 3803024, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x0000000103103b00 -[MGLAnnotationView setCenter:] + 72
5 Mapbox 0x0000000103168138 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 712
6 Mapbox 0x000000010316a974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
7 libdispatch.dylib 0x00000001067cbce4 _dispatch_call_block_and_release + 24
8 libdispatch.dylib 0x00000001067cd528 _dispatch_client_callout + 16
9 libdispatch.dylib 0x00000001067cfcc4 _dispatch_queue_override_invoke + 888
10 libdispatch.dylib 0x00000001067df048 _dispatch_root_queue_drain + 376
11 libdispatch.dylib 0x00000001067df970 _dispatch_worker_thread2 + 152
12 libsystem_pthread.dylib 0x00000001c9c51568 _pthread_wqthread + 212
13 libsystem_pthread.dylib 0x00000001c9c54874 start_wqthread + 8
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIView frame]
PID: 9527, TID: 3803050, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x0000000103164278 -[MGLMapView edgePaddingForFollowingWithCourse] + 92
5 Mapbox 0x0000000103168324 -[MGLMapView userLocationAnnotationViewCenter] + 252
6 Mapbox 0x0000000103167f30 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 192
7 Mapbox 0x000000010316a974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
8 libdispatch.dylib 0x00000001067cbce4 _dispatch_call_block_and_release + 24
9 libdispatch.dylib 0x00000001067cd528 _dispatch_client_callout + 16
10 libdispatch.dylib 0x00000001067cfcc4 _dispatch_queue_override_invoke + 888
11 libdispatch.dylib 0x00000001067df048 _dispatch_root_queue_drain + 376
12 libdispatch.dylib 0x00000001067df970 _dispatch_worker_thread2 + 152
13 libsystem_pthread.dylib 0x00000001c9c51568 _pthread_wqthread + 212
14 libsystem_pthread.dylib 0x00000001c9c54874 start_wqthread + 8
2021-03-28 23:01:46.983259+0100 test-123[9527:3803050] [reports] Main Thread Checker: UI API called on a background thread: -[UIView frame]
PID: 9527, TID: 3803050, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x0000000103164278 -[MGLMapView edgePaddingForFollowingWithCourse] + 92
5 Mapbox 0x0000000103168324 -[MGLMapView userLocationAnnotationViewCenter] + 252
6 Mapbox 0x0000000103167f30 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 192
7 Mapbox 0x000000010316a974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
8 libdispatch.dylib 0x00000001067cbce4 _dispatch_call_block_and_release + 24
9 libdispatch.dylib 0x00000001067cd528 _dispatch_client_callout + 16
10 libdispatch.dylib 0x00000001067cfcc4 _dispatch_queue_override_invoke + 888
11 libdispatch.dylib 0x00000001067df048 _dispatch_root_queue_drain + 376
12 libdispatch.dylib 0x00000001067df970 _dispatch_worker_thread2 + 152
13 libsystem_pthread.dylib 0x00000001c9c51568 _pthread_wqthread + 212
14 libsystem_pthread.dylib 0x00000001c9c54874 start_wqthread + 8
OpenGL ES is deprecated in iOS 12, in favor of Metal which is pretty significant. Copying over issue from Mapbox GL native: mapbox/mapbox-gl-native#12061
Bintray will be turn off May 1st, 2021
WebP is an open source image format that provides smaller file sizes and lossy & lossless formats.
See the branch roblabs/maplibre-gl-native:webp-ios for details on how to bring WebP into MapLibre. The decision was made to document how to do this, rather than a formal PR at this time.
a basic style for adding a WebP raster layer for Joshua Tree National Park.
{
"version": 8,
"name": "Joshua Tree National Park...in WebP",
"center": [-115.746, 33.866],
"zoom": 7,
"sources": {
"jotr": {
"tiles": [ "asset://joshuatree/{z}/{x}/{y}.webp" ],
"type": "raster"
}
},
"layers": [
{
"id": "background",
"type": "background",
"paint": {
"background-color": "#ddeeff"
}
},
{
"id": "jotr",
"type": "raster",
"source": "jotr",
"layout": {},
"paint": {}
}
]
}
This work is donated by ePi Rational, Inc. based on work initially done by mapbox/mapbox-gl-native
And updated over several versions of the iOS SDK.
Example of WebP rasters in MapLibre for Joshua Tree National Park
What are the Mapbox attribution requirements when using maplibre-gl-native on iOS & Android?
Mapbox stated the following (same applies for both Android and iOS): "You must include the Mapbox wordmark and attribution notice on any map that uses the Mapbox Maps SDK for Android".
Maplibre is still based on the Mapbox SDK which would suggest that attribution is required.
The existing XCFramework you're distributing could be expanded to include the macOS platform alongside iOS and iOS Simulator (and Mac Catalyst)
When panning/zooming map and locking device, iOS app with MapLibre SDK crashes occasionally. Likely same issue as this one with Mapbox iOS SDK.
Crash log:
Hardware Model: iPhone13,3
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Date/Time: 2021-04-20 15:14:10.9909 +0300
Launch Time: 2021-04-20 15:11:46.5801 +0300
OS Version: iPhone OS 14.5 (18E5154f)
Release Type: Beta
Baseband Version: 1.60.01-2
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [6125]
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 libsystem_platform.dylib 0x00000001ded94684 _platform_memmove + 132
1 AGXMetalA14 0x00000001dff7d07c AGX::Texture<(AGXTextureMemoryLayout)3, AGX::G13::Encoders, AGX::G13::Classes>::readRegion(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned... + 632 (agxa_texture_template.hpp:2122)
2 AGXMetalA14 0x00000001dff7cdf8 -[AGXA14FamilyTexture getBytes:bytesPerRow:bytesPerImage:fromRegion:mipmapLevel:slice:] + 88 (agxa_texture_objc.mm:654)
3 AppleMetalGLRenderer 0x00000001df2c19a0 gldReadFramebufferData + 1260 (glr_framebuffer.mm:552)
4 GLEngine 0x00000001c7178620 glReadPixels_Exec + 924 (gl_read_pixels.c:329)
5 GLKit 0x00000001c5e074ec -[GLKView snapshot] + 252 (GLKView.m:728)
6 Mapbox 0x00000001038a6bd4 0x1034bc000 + 4107220
7 CoreFoundation 0x0000000192dac9e4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 28 (CFNotificationCenter.c:706)
8 CoreFoundation 0x0000000192dac98c ___CFXRegistrationPost_block_invoke + 52 (CFNotificationCenter.c:173)
9 CoreFoundation 0x0000000192dabef8 _CFXRegistrationPost + 440 (CFNotificationCenter.c:198)
10 CoreFoundation 0x0000000192dab8b8 _CFXNotificationPost + 716 (CFNotificationCenter.c:1071)
11 Foundation 0x00000001940a3a3c -[NSNotificationCenter postNotificationName:object:userInfo:] + 64 (NSNotification.m:575)
12 UIKitCore 0x000000019582b808 -[UIApplication _deactivateForReason:notify:] + 1412 (UIApplication.m:1822)
13 UIKitCore 0x0000000194e8af38 __101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke_2 + 988 (_UISceneLifecycleMultiplexer.m:686)
14 UIKitCore 0x00000001953f2978 _UIScenePerformActionsWithLifecycleActionMask + 104 (_UISceneLifecycleState.m:109)
15 UIKitCore 0x0000000194e8aac0 __101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke + 224 (_UISceneLifecycleMultiplexer.m:549)
16 UIKitCore 0x0000000194e8a580 -[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 484 (_UISceneLifecycleMultiplexer.m:501)
17 UIKitCore 0x0000000194e8a8d0 -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 768 (_UISceneLifecycleMultiplexer.m:548)
18 UIKitCore 0x0000000194e8a10c -[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] + 340 (_UISceneLifecycleMultiplexer.m:454)
19 UIKitCore 0x0000000194e92650 __186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block... + 196 (_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction.m:72)
20 UIKitCore 0x00000001953006e0 +[BSAnimationSettings(UIKit) tryAnimatingWithSettings:actions:completion:] + 892 (BSAnimationSettings+UIKit.m:50)
21 UIKitCore 0x000000019540b788 _UISceneSettingsDiffActionPerformChangesWithTransitionContext + 276 (_UISceneSettingsDiffAction.m:23)
22 UIKitCore 0x0000000194e92348 -[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] + 384 (_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction.m:57)
23 UIKitCore 0x0000000194cba1cc __64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 776 (UIScene.m:1419)
24 UIKitCore 0x0000000194cb8b4c -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 256 (UIScene.m:1140)
25 UIKitCore 0x0000000194cb9df4 -[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 248 (UIScene.m:1386)
26 UIKitCore 0x000000019532a1f0 -[UIApplicationSceneClientAgent scene:handleEvent:withCompletion:] + 492 (UIApplicationSceneClientAgent.m:80)
27 FrontBoardServices 0x00000001a284e004 -[FBSScene updater:didUpdateSettings:withDiff:transitionContext:completion:] + 484 (FBSScene.m:547)
28 FrontBoardServices 0x00000001a287a740 __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke_2 + 152 (FBSWorkspaceScenesClient.m:533)
29 FrontBoardServices 0x00000001a285c7f0 -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 240 (FBSWorkspace.m:355)
30 FrontBoardServices 0x00000001a287a66c __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke + 396 (FBSWorkspaceScenesClient.m:532)
31 libdispatch.dylib 0x0000000192a3e878 _dispatch_client_callout + 20 (object.m:559)
32 libdispatch.dylib 0x0000000192a42368 _dispatch_block_invoke_direct + 268 (queue.c:468)
33 FrontBoardServices 0x00000001a28a13e4 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 48 (FBSSerialQueue.m:184)
34 FrontBoardServices 0x00000001a28a1074 -[FBSSerialQueue _targetQueue_performNextIfPossible] + 448 (FBSSerialQueue.m:227)
35 FrontBoardServices 0x00000001a28a15c8 -[FBSSerialQueue _performNextFromRunLoopSource] + 32 (FBSSerialQueue.m:258)
36 CoreFoundation 0x0000000192dcbc98 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28 (CFRunLoop.c:1967)
37 CoreFoundation 0x0000000192dcbb94 __CFRunLoopDoSource0 + 208 (CFRunLoop.c:2011)
38 CoreFoundation 0x0000000192dcaf04 __CFRunLoopDoSources0 + 376 (CFRunLoop.c:2056)
39 CoreFoundation 0x0000000192dc4e78 __CFRunLoopRun + 820 (CFRunLoop.c:2925)
40 CoreFoundation 0x0000000192dc4610 CFRunLoopRunSpecific + 600 (CFRunLoop.c:3242)
41 GraphicsServices 0x00000001aa8f2734 GSEventRunModal + 164 (GSEvent.c:2259)
42 UIKitCore 0x000000019583111c -[UIApplication _run] + 1072 (UIApplication.m:3270)
43 UIKitCore 0x000000019583698c UIApplicationMain + 168 (UIApplication.m:4741)
No crashes
App crashes occasionally when opening after described steps
Configuration
Maplibre iOS SDK version: ios-v5.11.0
iOS/macOS versions: iOS 14.5 Beta (18E5154f)
Device/simulator models: iPhone 12 Pro
Xcode version: 12.4
Cherry pick from mapbox/mapbox-gl-native-android@2175252
Calling MGLMapView.locationManager.delegate.locationManager(manager, didUpdate:heading)
causes an "API called from background thread" issue:
[UIView convertPoint:toView:]
must be used from main thread only[UIView superview]
must be used from main thread only[UIView bounds]
must be used from main thread only[UIView setCenter:]
must be used from main thread onlyThis happens with a custom MGLAnnotationView
that is returned if annotation is MGLUserLocation
from the mapView(mapView:,viewFor:)
delegate method call.
Wrapping the update heading call in DispathQueue.main.async
does not work around the issue.
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIView convertPoint:toView:]
PID: 1057, TID: 219955, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x00000001088be74c -[MGLMapView convertLatLng:toPointToView:] + 84
5 Mapbox 0x00000001088be6a8 -[MGLMapView convertCoordinate:toPointToView:] + 88
6 Mapbox 0x00000001088cbf88 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 280
7 Mapbox 0x00000001088ce974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
8 libdispatch.dylib 0x0000000106658064 _dispatch_call_block_and_release + 32
9 libdispatch.dylib 0x0000000106659d90 _dispatch_client_callout + 20
10 libdispatch.dylib 0x000000010665c8c8 _dispatch_queue_override_invoke + 1008
11 libdispatch.dylib 0x000000010666dde0 _dispatch_root_queue_drain + 396
12 libdispatch.dylib 0x000000010666e79c _dispatch_worker_thread2 + 136
13 libsystem_pthread.dylib 0x00000001d68e2768 _pthread_wqthread + 216
14 libsystem_pthread.dylib 0x00000001d68e974c start_wqthread + 8
2021-05-17 13:44:30.442833+0200 Connect[1057:219955] [reports] Main Thread Checker: UI API called on a background thread: -[UIView convertPoint:toView:]
PID: 1057, TID: 219955, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x00000001088be74c -[MGLMapView convertLatLng:toPointToView:] + 84
5 Mapbox 0x00000001088be6a8 -[MGLMapView convertCoordinate:toPointToView:] + 88
6 Mapbox 0x00000001088cbf88 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 280
7 Mapbox 0x00000001088ce974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
8 libdispatch.dylib 0x0000000106658064 _dispatch_call_block_and_release + 32
9 libdispatch.dylib 0x0000000106659d90 _dispatch_client_callout + 20
10 libdispatch.dylib 0x000000010665c8c8 _dispatch_queue_override_invoke + 1008
11 libdispatch.dylib 0x000000010666dde0 _dispatch_root_queue_drain + 396
12 libdispatch.dylib 0x000000010666e79c _dispatch_worker_thread2 + 136
13 libsystem_pthread.dylib 0x00000001d68e2768 _pthread_wqthread + 216
14 libsystem_pthread.dylib 0x00000001d68e974c start_wqthread + 8
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIView superview]
PID: 1057, TID: 219955, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x00000001088cbfac -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 316
5 Mapbox 0x00000001088ce974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
6 libdispatch.dylib 0x0000000106658064 _dispatch_call_block_and_release + 32
7 libdispatch.dylib 0x0000000106659d90 _dispatch_client_callout + 20
8 libdispatch.dylib 0x000000010665c8c8 _dispatch_queue_override_invoke + 1008
9 libdispatch.dylib 0x000000010666dde0 _dispatch_root_queue_drain + 396
10 libdispatch.dylib 0x000000010666e79c _dispatch_worker_thread2 + 136
11 libsystem_pthread.dylib 0x00000001d68e2768 _pthread_wqthread + 216
12 libsystem_pthread.dylib 0x00000001d68e974c start_wqthread + 8
2021-05-17 13:44:40.393465+0200 Connect[1057:219955] [reports] Main Thread Checker: UI API called on a background thread: -[UIView superview]
PID: 1057, TID: 219955, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x00000001088cbfac -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 316
5 Mapbox 0x00000001088ce974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
6 libdispatch.dylib 0x0000000106658064 _dispatch_call_block_and_release + 32
7 libdispatch.dylib 0x0000000106659d90 _dispatch_client_callout + 20
8 libdispatch.dylib 0x000000010665c8c8 _dispatch_queue_override_invoke + 1008
9 libdispatch.dylib 0x000000010666dde0 _dispatch_root_queue_drain + 396
10 libdispatch.dylib 0x000000010666e79c _dispatch_worker_thread2 + 136
11 libsystem_pthread.dylib 0x00000001d68e2768 _pthread_wqthread + 216
12 libsystem_pthread.dylib 0x00000001d68e974c start_wqthread + 8
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIView bounds]
PID: 1057, TID: 219955, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x00000001088cc024 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 436
5 Mapbox 0x00000001088ce974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
6 libdispatch.dylib 0x0000000106658064 _dispatch_call_block_and_release + 32
7 libdispatch.dylib 0x0000000106659d90 _dispatch_client_callout + 20
8 libdispatch.dylib 0x000000010665c8c8 _dispatch_queue_override_invoke + 1008
9 libdispatch.dylib 0x000000010666dde0 _dispatch_root_queue_drain + 396
10 libdispatch.dylib 0x000000010666e79c _dispatch_worker_thread2 + 136
11 libsystem_pthread.dylib 0x00000001d68e2768 _pthread_wqthread + 216
12 libsystem_pthread.dylib 0x00000001d68e974c start_wqthread + 8
2021-05-17 13:44:40.535415+0200 Connect[1057:219955] [reports] Main Thread Checker: UI API called on a background thread: -[UIView bounds]
PID: 1057, TID: 219955, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x00000001088cc024 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 436
5 Mapbox 0x00000001088ce974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
6 libdispatch.dylib 0x0000000106658064 _dispatch_call_block_and_release + 32
7 libdispatch.dylib 0x0000000106659d90 _dispatch_client_callout + 20
8 libdispatch.dylib 0x000000010665c8c8 _dispatch_queue_override_invoke + 1008
9 libdispatch.dylib 0x000000010666dde0 _dispatch_root_queue_drain + 396
10 libdispatch.dylib 0x000000010666e79c _dispatch_worker_thread2 + 136
11 libsystem_pthread.dylib 0x00000001d68e2768 _pthread_wqthread + 216
12 libsystem_pthread.dylib 0x00000001d68e974c start_wqthread + 8
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIView setCenter:]
PID: 1057, TID: 219955, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x0000000108867b00 -[MGLAnnotationView setCenter:] + 72
5 Mapbox 0x00000001088cc138 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 712
6 Mapbox 0x00000001088ce974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
7 libdispatch.dylib 0x0000000106658064 _dispatch_call_block_and_release + 32
8 libdispatch.dylib 0x0000000106659d90 _dispatch_client_callout + 20
9 libdispatch.dylib 0x000000010665c8c8 _dispatch_queue_override_invoke + 1008
10 libdispatch.dylib 0x000000010666dde0 _dispatch_root_queue_drain + 396
11 libdispatch.dylib 0x000000010666e79c _dispatch_worker_thread2 + 136
12 libsystem_pthread.dylib 0x00000001d68e2768 _pthread_wqthread + 216
13 libsystem_pthread.dylib 0x00000001d68e974c start_wqthread + 8
2021-05-17 13:44:40.643654+0200 Connect[1057:219955] [reports] Main Thread Checker: UI API called on a background thread: -[UIView setCenter:]
PID: 1057, TID: 219955, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
Backtrace:
4 Mapbox 0x0000000108867b00 -[MGLAnnotationView setCenter:] + 72
5 Mapbox 0x00000001088cc138 -[MGLMapView updateUserLocationAnnotationViewAnimatedWithDuration:] + 712
6 Mapbox 0x00000001088ce974 __47-[MGLMapView locationManager:didUpdateHeading:]_block_invoke + 280
7 libdispatch.dylib 0x0000000106658064 _dispatch_call_block_and_release + 32
8 libdispatch.dylib 0x0000000106659d90 _dispatch_client_callout + 20
9 libdispatch.dylib 0x000000010665c8c8 _dispatch_queue_override_invoke + 1008
10 libdispatch.dylib 0x000000010666dde0 _dispatch_root_queue_drain + 396
11 libdispatch.dylib 0x000000010666e79c _dispatch_worker_thread2 + 136
12 libsystem_pthread.dylib 0x00000001d68e2768 _pthread_wqthread + 216
13 libsystem_pthread.dylib 0x00000001d68e974c start_wqthread + 8
iOS version: 14.5.1
MapLibre GL Native version: 5.11.0
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.