naderio / nativescript-google-maps-utils Goto Github PK
View Code? Open in Web Editor NEWNativeScript Google Maps SDK utility library to support features such as marker clustering, heatmap, ...
License: The Unlicense
NativeScript Google Maps SDK utility library to support features such as marker clustering, heatmap, ...
License: The Unlicense
app crashed when setupMarkerCluster in NS Angular app
Can I change cluster image to my image?
In android google maps, I can do it, but in your readme file, you did not supplied this option.
Hi,
Is there a way to remove the entire heatmap layer ( created with GoogleMapsUtils.setupHeatmap(mapView, positionSet)
)
Hi, is there a way to change heatmap gradient colors ?
var renderer = new dis.clustering.view.DefaultClusterRenderer(app.android.context, dis.gMap, dis.cluster_manager);
renderer.onBeforeClusterItemRendered = function (item, markerOptions) {
console.log("setup");
markerOptions.alpha(0.8);
markerOptions.flat(true);
markerOptions.rotation(item.rotation);
var icon = new Image();
icon.imageSource = imageSource.fromResource('icon_location');
var androidIcon = com.google.android.gms.maps.model.BitmapDescriptorFactory.fromBitmap(icon.imageSource.android);
markerOptions.icon(androidIcon);
};
dis.cluster_manager.setRenderer(renderer);
It compiles without errors, and when I do renderer.setMinClusterSize(1);
it sets it accordingly. However, I get the default markers and default cluster style. So I am console.logging the function, but it is not logging out anything. Is this implemented correctly?
I'm trying to enable clustered marker in android using angular 6.
My code was rather simple, and I had no idea when the app crashed (it exited to the emulator home screen automatically) when it ran this line of code
GoogleMapsUtils.setupMarkerCluster(this.mapView, markerSet);
Here's the code snippet:
import section:
import { MapView, Marker, Position } from 'nativescript-google-maps-sdk';
import * as GoogleMapsUtils from "nativescript-google-maps-utils"
inside the function
let markerSet = [];
this.journeys.forEach(journey => {
let theMarker: Marker = new Marker();
theMarker.position = Position.positionFromLatLng(journey.latitude, journey.longitude);
theMarker.title = journey.vehicleRegistrationNumber;
theMarker.snippet = journey.vehicleRegistrationNumber;
markerSet.push(theMarker);
});
setTimeout(() => {
GoogleMapsUtils.setupMarkerCluster(this.mapView, markerSet);
this.zoomCenterOnMultipleMarkers();
}, 1000)
Does anyone get it to working on angular? Please help
The readme says that IOS hasn't been implemented, but it also shows the IOS framework as a dependency... Can you clarify if this works on IOS?
I got this error: ERROR ReferenceError: Metadata for "GoogleMaps.GMSGeometryContainsLocation" found but symbol not available at runtime.
i'm using
"nativescript-google-maps-sdk": "^2.6.0",
"nativescript-google-maps-utils": "^0.1.3",
"tns-core-modules": "^4.0.1",
any solutions?
Great work @naderio, was working on something similar and came across your plugin. When trying to run it on android simulator it throws the below error, tried
rm -rf node_modules platforms
tns install
but no luck.
full error log
java.lang.RuntimeException: Unable to create application com.tns.NativeScriptApplication: com.tns.NativeScriptException:
Error calling module function
TypeError: Cannot read property 'android' of undefined
File: "<unknown>, line: 1, column: 265
StackTrace:
Frame: function:'', file:'/data/data/org.nativescript.testmaps/files/app/tns_modules/nativescript-google-maps-utils/index.js', line: 7, column: 34
Frame: function:'require', file:'', line: 1, column: 266
Frame: function:'', file:'/data/data/org.nativescript.testmaps/files/app/app.component.js', line: 5, column: 23
Frame: function:'require', file:'', line: 1, column: 266
Frame: function:'', file:'/data/data/org.nativescript.testmaps/files/app/main.js', line: 4, column: 23
Frame: function:'require', file:'', line: 1, column: 266
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4710)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at andro
So before I implemented clusters I had my Markers open infowindows and on marker click triggered events with the markerSelect
and markerInfoWindowTapped
directives of the MapView. (I'm using NativeScript with Angular 2.x)
Anyway, after clustering, neither the info windows nor the MapView directives work/trigger when I click on a marker. For "shits & giggles" I modified the index.android.td
adding the following line mapView.notifyMarkerEvent("markerSelect", clusterManager);
in the function setupMarkerCluster()
.
With that the markerSelect
directive will trigger, but with no marker to be found... ๐ฉ
Any thoughts or insight would be helpful here, thank you!
Currently, podfile is failing to install Google-Maps-iOS-Utils as it has some references to static files,
I worked around it by disabling the pre-install check as below,
pre_install do |installer|
def installer.verify_no_static_framework_transitive_dependencies; end
end
pod 'Google-Maps-iOS-Utils', '~> 1.0'
Now, whenever I try to reference any headers within the Utils library it throws an error saying,
JS ERROR ReferenceError: Can't find variable: GMUCluster
Does that mean we can't use it until Google releases their Utils-Library without references to static files?
Thanks
Hi @naderio, Awesome project! This can really be useful for a project of mine. Do you have a rough idea on when you think the iOS implementation will be done? :)
Looking forward to hearing from you.
Even though this repo seems not to be deprecated, I'm trying to get help on this issue here..
I took the demo app from this repo, migrated the project using tns migrate
to NS 6 and updated the dependencies using tns update
.
When the demo app is calling GoogleMapsUtils.setupMarkerCluster(mapView, markerSet, {});
, the app crashes with a JNI error:
System.err: An uncaught Exception occurred on "main" thread.
System.err: Calling js method onMapReady failed
System.err: Error: JNI Exception occurred (SIGABRT).
System.err: =======
System.err: Check the 'adb logcat' for additional information about the error.
System.err: =======
System.err:
System.err:
System.err: StackTrace:
System.err: (file: node_modules/nativescript-google-maps-utils/index.android.js:105:0)
System.err: at setupMarkerCluster(file: node_modules/nativescript-google-maps-utils/index.android.js:102:0)
System.err: at onMapReady(file: app/main-page.js:128:0)
System.err: at push.../node_modules/@nativescript/core/data/observable/observable.js.Observable.notify(file: node_modules/@nativescript/core/data/observable/observable.js:110:0)
System.err: at push.../node_modules/nativescript-google-maps-sdk/map-view-common.js.MapViewBase.notifyMapReady(file: node_modules/nativescript-google-maps-sdk/map-view-common.js:232:0)
System.err: at onMapReady(file: node_modules/nativescript-google-maps-sdk/map-view.android.js:271:0)
System.err: at com.tns.Runtime.callJSMethodNative(Native Method)
System.err: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1286)
System.err: at com.tns.Runtime.callJSMethodImpl(Runtime.java:1173)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1160)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1138)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1134)
System.err: at com.tns.gen.com.google.android.gms.maps.OnMapReadyCallback.onMapReady(OnMapReadyCallback.java:19)
System.err: at com.google.android.gms.maps.zzac.zza(Unknown Source:2)
System.err: at com.google.android.gms.maps.internal.zzaq.dispatchTransaction(Unknown Source:12)
System.err: at com.google.android.gms.internal.maps.zzb.onTransact(Unknown Source:12)
System.err: at android.os.Binder.transact(Binder.java:914)
System.err: at cg.b(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (120800-0):2)
System.err: at com.google.maps.api.android.lib6.impl.be.run(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (120800-0):2)
System.err: at android.os.Handler.handleCallback(Handler.java:883)
System.err: at android.os.Handler.dispatchMessage(Handler.java:100)
System.err: at android.os.Looper.loop(Looper.java:214)
System.err: at android.app.ActivityThread.main(ActivityThread.java:7356)
System.err: at java.lang.reflect.Method.invoke(Native Method)
System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
When I run adb logcat
, I get the following log:
03-10 11:41:36.237 19271 19271 F tivescript.dem: runtime.cc:638] JNI DETECTED ERROR IN APPLICATION: bad arguments passed to void com.google.maps.android.clustering.ClusterManager.addItem(com.google.maps.android.clustering.ClusterItem) (see above for details)
03-10 11:41:36.237 19271 19271 F tivescript.dem: runtime.cc:638] from java.lang.Object com.tns.Runtime.callJSMethodNative(int, int, java.lang.String, int, boolean, java.lang.Object[])
03-10 11:41:36.237 19271 19271 F tivescript.dem: runtime.cc:638]
03-10 11:41:36.239 19271 19271 D AndroidRuntime: Shutting down VM
03-10 11:41:36.240 19271 19271 E AndroidRuntime: FATAL EXCEPTION: main
03-10 11:41:36.240 19271 19271 E AndroidRuntime: Process: org.nativescript.demo, PID: 19271
03-10 11:41:36.240 19271 19271 E AndroidRuntime: com.tns.NativeScriptException: Calling js method onMapReady failed
03-10 11:41:36.240 19271 19271 E AndroidRuntime: Error: JNI Exception occurred (SIGABRT).
03-10 11:41:36.240 19271 19271 E AndroidRuntime: =======
03-10 11:41:36.240 19271 19271 E AndroidRuntime: Check the 'adb logcat' for additional information about the error.
03-10 11:41:36.240 19271 19271 E AndroidRuntime: =======
03-10 11:41:36.240 19271 19271 E AndroidRuntime:
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.tns.Runtime.callJSMethodNative(Native Method)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1286)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.tns.Runtime.callJSMethodImpl(Runtime.java:1173)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.tns.Runtime.callJSMethod(Runtime.java:1160)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.tns.Runtime.callJSMethod(Runtime.java:1138)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.tns.Runtime.callJSMethod(Runtime.java:1134)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.tns.gen.com.google.android.gms.maps.OnMapReadyCallback.onMapReady(OnMapReadyCallback.java:19)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.google.android.gms.maps.zzac.zza(Unknown Source:2)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.google.android.gms.maps.internal.zzaq.dispatchTransaction(Unknown Source:12)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.google.android.gms.internal.maps.zzb.onTransact(Unknown Source:12)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at android.os.Binder.transact(Binder.java:914)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at cg.b(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (120800-0):2)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.google.maps.api.android.lib6.impl.be.run(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (120800-0):2)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:883)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:100)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7356)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
03-10 11:41:36.240 19271 19271 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
03-10 11:41:36.242 19271 19271 W System.err: An uncaught Exception occurred on "main" thread.
03-10 11:41:36.242 19271 19271 W System.err: Calling js method onMapReady failed
03-10 11:41:36.242 19271 19271 W System.err: Error: JNI Exception occurred (SIGABRT).
03-10 11:41:36.242 19271 19271 W System.err: =======
03-10 11:41:36.242 19271 19271 W System.err: Check the 'adb logcat' for additional information about the error.
03-10 11:41:36.242 19271 19271 W System.err: =======
03-10 11:41:36.242 19271 19271 W System.err:
03-10 11:41:36.242 19271 19271 W System.err:
03-10 11:41:36.242 19271 19271 W System.err: StackTrace:
03-10 11:41:36.242 19271 19271 W System.err: (file:///data/data/org.nativescript.demo/files/app/vendor.js:54072:24)
03-10 11:41:36.242 19271 19271 W System.err: at setupMarkerCluster(file:///data/data/org.nativescript.demo/files/app/vendor.js:54069:13)
03-10 11:41:36.242 19271 19271 W System.err: at onMapReady(file:///data/data/org.nativescript.demo/files/app/bundle.js:350:19)
03-10 11:41:36.242 19271 19271 W System.err: at push.../node_modules/@nativescript/core/data/observable/observable.js.Observable.notify(file:///data/data/org.nativescript.demo/files/app/vendor.js:3779:23)
03-10 11:41:36.242 19271 19271 W System.err: at push.../node_modules/nativescript-google-maps-sdk/map-view-common.js.MapViewBase.notifyMapReady(file:///data/data/org.nativescript.demo/files/app/vendor.js:52299:14)
03-10 11:41:36.242 19271 19271 W System.err: at onMapReady(file:///data/data/org.nativescript.demo/files/app/vendor.js:52813:23)
03-10 11:41:36.242 19271 19271 W System.err: at com.tns.Runtime.callJSMethodNative(Native Method)
03-10 11:41:36.242 19271 19271 W System.err: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1286)
03-10 11:41:36.242 19271 19271 W System.err: at com.tns.Runtime.callJSMethodImpl(Runtime.java:1173)
03-10 11:41:36.242 19271 19271 W System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1160)
03-10 11:41:36.242 19271 19271 W System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1138)
03-10 11:41:36.242 19271 19271 W System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1134)
03-10 11:41:36.242 19271 19271 W System.err: at com.tns.gen.com.google.android.gms.maps.OnMapReadyCallback.onMapReady(OnMapReadyCallback.java:19)
03-10 11:41:36.242 19271 19271 W System.err: at com.google.android.gms.maps.zzac.zza(Unknown Source:2)
03-10 11:41:36.242 19271 19271 W System.err: at com.google.android.gms.maps.internal.zzaq.dispatchTransaction(Unknown Source:12)
03-10 11:41:36.243 19271 19271 W System.err: at com.google.android.gms.internal.maps.zzb.onTransact(Unknown Source:12)
03-10 11:41:36.243 19271 19271 W System.err: at android.os.Binder.transact(Binder.java:914)
03-10 11:41:36.243 19271 19271 W System.err: at cg.b(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (120800-0):2)
03-10 11:41:36.243 19271 19271 W System.err: at com.google.maps.api.android.lib6.impl.be.run(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (120800-0):2)
03-10 11:41:36.243 19271 19271 W System.err: at android.os.Handler.handleCallback(Handler.java:883)
03-10 11:41:36.243 19271 19271 W System.err: at android.os.Handler.dispatchMessage(Handler.java:100)
03-10 11:41:36.243 19271 19271 W System.err: at android.os.Looper.loop(Looper.java:214)
03-10 11:41:36.243 19271 19271 W System.err: at android.app.ActivityThread.main(ActivityThread.java:7356)
03-10 11:41:36.243 19271 19271 W System.err: at java.lang.reflect.Method.invoke(Native Method)
03-10 11:41:36.243 19271 19271 W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
03-10 11:41:36.243 19271 19271 W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
03-10 11:41:36.250 2039 2309 I ActivityTaskManager: START u0 {flg=0x14008000 cmp=org.nativescript.demo/com.tns.ErrorReportActivity (has extras)} from uid 10484
03-10 11:41:36.252 2039 2309 W InputReader: Device has associated, but no associated display id.
03-10 11:41:36.252 2039 2309 I chatty : uid=1000(system) Binder:2039_4 identical 8 lines
03-10 11:41:36.252 2039 2309 W InputReader: Device has associated, but no associated display id.
03-10 11:41:36.253 19271 19314 D NetworkSecurityConfig: No Network Security Config specified, using platform default
03-10 11:41:36.255 19271 19271 I Process : Sending signal. PID: 19271 SIG: 9
The strange thing is that I was able to use the clustering functionality in a nativescript app for a short time and then suddenly I get this JNI error and I have no idea what changes i made that could cause this usse. I even started from scratch in a seperate project and I am not able to call this setupMarkerCluster
method anymore without crashing the app.
I don't know why it has worked before then...
Is anyone having a similar problem?
@naderio just in case you are still working on this repo, here is the modified/updated demo app to reproduce this:
demo.zip
Hello,
I do not know if this repo is still active but if it can help I have a plugin that uses google maps useful, I want to thank the author of this plugin for what he did before on google-maps-utils.
You can cluster on Android and IOS.
You can choose the icon you want for your markers
the rest is in development.
Do not hesitate to make improvement requests, I will try to do according to people's needs.
Good day to you.
https://github.com/j20mc/Nativescript-Danem-Google-Maps-Utils
Testing demo.
Hi, i'm trying to run the demo. For the heatmap i have no issues, but when clustering i get this on the console.
F/art (22551): sart/runtime/check_jni.cc:65] from java.lang.Object com.tns.Runtime.callJSMethodNative(int, int, java.lang.String, int, boolean, java.lang.Object[])
F/art (22551): sart/runtime/check_jni.cc:65] at com.tns.Runtime.callJSMethodNative(Native method)
F/art (22551): sart/runtime/check_jni.cc:65] at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1043)
F/art (22551): sart/runtime/check_jni.cc:65] at com.tns.Runtime.callJSMethodImpl(Runtime.java:925)
F/art (22551): sart/runtime/check_jni.cc:65] at com.tns.Runtime.callJSMethod(Runtime.java:912)
F/art (22551): sart/runtime/check_jni.cc:65] at com.tns.Runtime.callJSMethod(Runtime.java:896)
F/art (22551): sart/runtime/check_jni.cc:65] at com.tns.Runtime.callJSMethod(Runtime.java:888)
D/RCPManagerService( 2958): PackageReceiver onReceive() bundle Bundle[{com.android.chrome:privileged_process0.ignore_multidex=true, org.chromium.content.browser.NUM_PRIVILEGED_SERVICES=3, org.chromium.content.browser.SMART_CLIP_PROVIDER=org.chromium.content.browser.SmartClipProvider, com.samsung.android.sdk.multiwindow.penwindow.enable=true, com.google.android.partnersetup.RLZ_ACCESS_POINT=Y3, org.chromium.content.browser.REMOTE_MEDIA_PLAYERS=com.google.android.apps.chrome.videofling.YouTubeMediaRouteController, com.google.android.apps.chrome.videofling.ChromeDefaultMediaRouteController, com.google.android.gms.appdatasearch=2131230737, android.content.APP_RESTRICTIONS=2131230723, org.chromium.content.browser.SANDBOXED_SERVICES_NAME=org.chromium.content.app.SandboxedProcessService, com.android.chrome:privileged_process1.ignore_multidex=true, com.google.android.backup.api_key=AEdPqrEAAAAIf0B-GSVFi13Dd76NesRCxr7L1J1lxSqIc46ApA, org.chromium.content.browser.NUM_SANDBOXED_SERVICES=20, org.chromium.content.browser.PRIVILEGED_SERVICES_NAME=org.chromium.content.app.PrivilegedProcessService, com.samsung.android.sdk.multiwindow.multiinstance.launchmode=singleTask, com.google.android.gms.wallet.api.enabled=true, com.android.chrome:privileged_process2.ignore_multidex=true, com.samsung.android.sdk.multiwindow.multiinstance.enable=true, com.samsung.android.sdk.multiwindow.enable=true, com.google.android.gms.version=10298000, ipc.invalidation.ticl.gcm_upstream_service_class=org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender, com.google.android.safetynet.API_KEY=AIzaSyCfkBVK3ChTdIXvHj-R5VywRmWfyLNRxP0, firebase_analytics_collection_enabled=false, ipc.invalidation.ticl.listener_service_class=org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService}]
I/ActivityManager( 2958): Start proc 24488:com.android.chrome/u0a50 for broadcast-2 com.android.chrome/org.chromium.chrome.browser.upgrade.PackageReplacedBroadcastReceiver
D/ActivityManager( 2958): retrieveServiceLocked(): component = com.android.chrome/org.chromium.components.background_task_scheduler.BackgroundTaskGcmTaskService; callingUser = 0; userId(target) = 0
D/ActivityManager( 2958): retrieveServiceLocked(): component = com.android.chrome/org.chromium.chrome.browser.ChromeBackgroundService; callingUser = 0; userId(target) = 0
I/cr_LibraryLoader(24488): Using linker: org.chromium.base.library_loader.LegacyLinker
W/linker (24488): libchromium_android_linker.so: unused DT entry: type 0x6ffffffe arg 0xd00
W/linker (24488): libchromium_android_linker.so: unused DT entry: type 0x6fffffff arg 0x3
chromium: [INFO:library_loader_hooks.cc(144)] Chromium logging enabled: level = 0, default verbosity = 0
I/cr_BrowserStartup(24488): Initializing chromium process, singleProcess=false
D/ActivityManager( 2958): retrieveServiceLocked(): component = com.android.chrome/org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService; callingUser = 0; userId(target) = 0
D/ActivityManager( 2958): retrieveServiceLocked(): component = com.android.chrome/org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService; callingUser = 0; userId(target) = 0
D/ActivityManager( 2958): retrieveServiceLocked(): component = com.android.chrome/org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService; callingUser = 0; userId(target) = 0
chromium: [WARNING:syncer_proto_util.cc(338)] Error posting from syncer: Response Code (bogus on error): -1 Content-Length (bogus on error): -1 Server Status: SYNC_AUTH_ERROR
D/ActivityManager( 2958): retrieveServiceLocked(): component = com.android.chrome/org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender; callingUser = 0; userId(target) = 0
Any ideas?
Thanks in advance!
I have some markers that the coordenates are almost identical, but on the map the cluster doesn't group them unless there are more than 5 markers on the same place (which I believe is the default minimun value). Is there any way to change this setting?
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.