I am trying to figure out a good plugin to use, where I can load a map on the app and has clustering and custom pins enabled into it. I have tried 2 different options and they all miss the mark, I then have to do custom rendering which I end up breaking something in the plugin.
Plugins I have used
TK.CustomMap (Works but there are a lot of bugs in this plugin, and these bugs seem to appear when IsClusteringEnabled is True. Also it doesn't seem to be a lot of interaction from the author. )
Xamarin.Forms.GoogleMaps with Xamarin.Forms.GoogleMaps.Clustering - (works but is slower than TK.CustomMaps for the rendering of pins. Also the clustering does not work as expected. It clusters in static positions and so like if pins are located in Santa Monica but the cluster is already created in Anaheim, all the pins will get pulled to Santa Monica, which looks weird from a user perspective.)
TKCustom maps works better overall but those bugs are very tedious and some of the workarounds are not longer working.
Is the better option or should I just use Xamarin.Forms.Maps and render all custom functions since Xamarin Maps seems to not include a lot of these?
I found a lot more plugins that might have worked but I ultimately ended up using custom controls and renderers to get what I wanted. It was simple enough for me to implement since what I wanted was not very complicated.
I did however find some very helpful links. Some of these are standard but it helped me understand different parts that I could implement to get all the specific actions and designs I needed.
New Features in MapKit on iOS 11
Customizing a Map Pin
Xamarin.Forms Map Control
XAMARIN.ANDROID – GROUPING GOOGLE MAP MARKERS WITH “CLUSTERING”
Related
All:
I got some decision pain here, as beginner, say I need to build a data visualization Application with D3, I kinda wondering which library should I use to handler those chart drawing( it is a little bit complicated, with a lot of user action like add/remove/moving/style/animation etcs), currently this application is implement by Angular1 and not that modularized, also when data grows, the chart drawing is lagging. That is why I am thinking of switching.
Right now, I do not have much experience about either Angular2 or React, but I hear that they are both very performanced, so in terms of code complexity and performance, could anyone give me some concrete suggestion?
Thanks
We currently have a large javascript application that uses ReactJS and D3 charts.
It's pretty performant although we have the lucky advantage of not having to support mobile as it's an enterprise application.
One thing I would say is be aware of Reacts shouldComponentUpdate method and use ImmutableJS for your containers. We've also implemented flux and a WebSocket API, but if you're new to React I'd just try and get a really simple d3 chart like a sankey working and go from there.
When you actually get to the leaf node that's a d3 chart, you can then convert Immutable data types to native objects but only to pass it to d3.
It works completely fine, I wouldn't however manage any sort of state in d3, be careful not to fall into that trap. You want to attach events like click etc. to a d3 node, but your React components should be handling those events and not d3.
Hope that helps.
I have also used d3 and react. They played together perfectly fine for me, especially since d3 is also on npm and fit nicely into the bundler required to compile jsx used by react. I don't see a downside to it. As a matter of fact, http://avocadojesus.com is built entirely in react and d3js, and uses the web audio api to stream the data into different d3 data visualizations (so dont view in safari unless you want to be bored lol).
I have used angular1 on projects and been very happy with most aspects of it. I think the only place it fell short with me was on large ng-repeat mappings. If your front-end is architected in consideration of your users, it's very unlikely you should run into large ng-repeat problems (But I would probably avoid for any infinite scroll situations, as the ramifications of leaving all those elements in the dom can cause major problems in angular's dom rendering cycles).
I think Angular has been a bit of a disappointment to me only in that it seems to be hanging in the balance for so long. Angular2 is completely rewritten in many ways, so learning angular1 right now might cause more growing pains down the road for you, as you would obviously want to upgrade. Learning Angular2 was frustrating last time i tried to do it, as they hadn't released any documentation and were still advising extreme caution against using it for anything non-experimental. Now they are in beta, and it seems pretty safe to learn. If you are feeling brave, or if you are just experimenting and think fondly of angular1 then angular2 is a good choice for you. The right tool for you should be one that you really love to work with, and both projects have excellent support docs and community so its safe either way IMHO
If it were up to me, I would stick with react. There is a large community built around it, and the framework is very simple. The simplicity of it is what really allows it to shine. It trains you in the proper way to collect, distribute, and update data to affect the state of all your components. If you are brave and skilled, i would recommend doing a deep dive into the flux framework as well, as it is fairly complicated, but allows you to see how well such a simple component architecture can do when informed by a sophisticated set of data stores and actions. Conceptually, it was very enlightening for me, and it informs all the code that i write now. My rails has even been getting fluxy lately haha >.<
I am looking for some advice from somebody who has used Google maps and Codeigniter. I am new to maps and working on a project that is built with Codeigniter and uses Google Maps. I am wondering whether to incorporate it directly into the project or use a library for it.
I have found a library here - http://biostall.com/codeigniter-google-maps-v3-api-library and have started using it and have found it easy to use for incorporating maps. I am wondering however if anyone else has used it and if so does it have the full functionality of Google Maps.
I know that Google Maps has amazing features and I am a bit anxious to continue with the library and discover later in my project that it doesn't support the functionality I might need. I am going to keep researching it but if anyone has experience with it I would appreciate some advice.
Yes, I've used two different Google Maps libraries for CodeIgniter 2.
I ended up keeping the one you've linked for both projects. It was cleaner to use than the other, less helpers to load and lines to write in order to create a simple map. I don't know what else you're really looking for here. Also, with this library, I only needed to pass two variables into the View... where with the other, the View needed a bit more complex code. Really, there's only two variables that need to be passed into the view... the Map and the JavaScript for the map. If you're clever, you could also combine them into one.
Quote OP:
"I know that Google Maps has amazing features and I am a bit anxious to continue with the library and discover later in my project that it doesn't support the functionality I might need."
So what? If that's your only concern, then don't worry. Switching out something like this is pretty easy. Since it's invoked and configured in your Controller (or it should be), there's relatively little code to change.
(The developer was also very responsive to my support requests, which is saying a lot for a open source project.)
yesterday I stumbled across the Haxe NME project, which is a very promising idea. However, it is still not possible to build sophisticated UIs with this framework. In my opinion it seems to be a intimidating task to build a UI framework that targets so many different platforms, hence I think that this isn't a viable approach, because even old and mature UI frameworks like Qt and wxWidgets don't support so many platforms.
However, it could make sense to build a platform specific UI with help of some pretty UI designer tool and then connect the UI code to the UI agnostic code that has been written in Haxe. I don't know if this could work, because I couldn't find any example, but maybe someone who has already written some MVC Haxe code, that could be successfully connected to different platform specific UIs, would like to share his experiences. Thanks.
You say:
However, it is still not possible to build sophisticated UIs
Just because you haven't yet figured out how to do it doesn't mean it's not possible ;)
The reason it is possible is that in the Haxe ecosystem, the language and compiler is extremely consistent cross platform, NME/OpenFL provides a fairly strong cross platform rendering environment (HTML 5 has some quirks, but the others seem fairly strong) and so anything you build on top of these is going to cover a lot of platforms out-of-the-box. It's about being fairly high level - letting the compiler and the libraries take care of the platform quirks.
In MVC, the UI stuff is usually the "View". For View / UI frameworks, check out these libraries:
Stablex UI
NME/OpenFL, Cross Platform. Draws components using NME API. This is
the only one I've played with, but the demo works consistently on android,
flash, html5, native linux. Pretty impressive.
HaxeUI
NME, Cross Platform. Again, draws components on the stage.
Prime
Drawn using Flash API. Not sure if it has been ported cross platform yet.
See also Talk/Video from WWX conference and Slides
Guise
A really innovative way of being able to either draw the UI, or use native if available. Check out the blog post.
Basis
Another attempt at wrapping native components - has iOS and Android libraries so far. Pretty cool, but I haven't played with it yet.
For MVC, there are lots of options:
PrimeVC, mentioned above.
MMVC, based on the RobotLegs framework, but tailored for Haxe.
Lots of small options BBMVC PureMVC etc
The advantage of the MVC frameworks is that they separate your views from your application data (model) and logic (controller). Try to spend some time familiarising yourself with one of the MVC frameworks, and you'll see how you can write your apps in a way where you could use one of these, and then any of the various view engines - either native or NME-rendered. It can be a fairly steep learning curve, but this is how you build apps that are easily portable between different UI frameworks, and easily testable so you know they will scale as the app grows in complexity.
The main problem you seem to face is that there is no out of the box option that is complete and ready for you to use. The multitudes of project people are suggesting do what you want. You need to be willing to use them. A small project on github may be dropped. If so it will be dropped because jo one uses it so its up to people who would like to use it (ie: you) to keep it going.
Everyone can't siphon of others completed projects or nothing would ever be created. Participation is what opensource is about.
Doesn't make sense to have a unified UI for all platforms, every platform have diferent workflow, have you tryed to use a IOS listbox on windows , is simply ridiculous. On the other hand a good design could separate the view from the bussines logic and you can share the bussiness logic with all targets and tweak the views for every target. look at PureMVC
for a mvc example in Haxe
I'm in the process of creating a silverlight app which will run in the browser and uses some data visualization stuff provided by ComponentArt. At some point I'd also like to create a a WinRT xaml/c# version so it can run as a windows store app all editions of Windows 8 including WindowsRT.
My question is how can I approach this to get maximum code-reusage between the 2 versions. I see no other way than having 2 versions (as I am tied to using componentart and can't use a html/js approach). In particular how portable will the xaml used in the silverlight app be to the windows store app?
Your XAML is as portable as the features you use. You can't reuse same XAML files since they use different namespaces and xmlns URI schemes and also you will most likely want to make the UI slightly different since Silverlight is primarily Mouse+Keyboard UI and WinRT/XAML is primarily touch.
Make sure you use MVVM to be able to reuse a lot of the non-XAML code. When selecting which controls to use - make sure they are available in WinRT/XAML or have good alternatives. Some of the missing things I saw were WriteableBitmap.Render() method, RadialGradientBrush, TypeConverterAttribute, Style/Setter bindings, TreeView, DataGrid or GridSplitter controls. Though there are open source versions of a lot of the missing controls - you will most likely want to use alternative UI design approaches for Windows Store Apps since these don't work well with touch.
For reference - I spent around 2-3 hours porting the TreeView control from Silverlight Toolkit to WinRT, around as much for the Calendar control and 20-30 hours to port the Chart control with its many kinds of data points and series - and that's on top of the original port by Mahmoud Moussa. Depending on the complexity of the features you use - the required effort will obviously grow. If you just use Buttons, TextBoxes, TextBlocks, RadioButtons, CheckBoxes etc. - you can mostly do copy&paste to port the XAML. I would also avoid retemplating the controls since template parts and visual states/visual state groups are slightly different between these platforms, so you would need to either redo the work or spend time correcting the templates.
I've started tinkering with webOS and it's pretty cool. Out of all the major smartphone platforms I have to say that webOS is the easiest to work with. Currently I'm just trying to get an intuitive sense for the framework and I'm just tinkering with basic stuff like event handling, pushing and popping scenes, etc. This has gotten me far but I'm getting to the point where my applications need a little more modularity since they no longer logically fit on a single stage with multiple scenes. I would like to know how do I go about writing my own assistants and controllers and using them in my code?
Are you using Eclipse with the plug in installed?
Even if not, just copy a basic controller and change around the class names everywhere you see it.
Say HomeController to PreferencesController
Add that preferencescontroller.js to your sources.json file and add a folder in the views called preferences with a file in there preferences_scene.html (I believe).
Since the current framework is MVC, you may also want to think about creating javascript models that would house your validation and even helper files that could be global or view specific. None of this is truly enforced except through your own doing though.
Also, beyond that, in 5 days HP will have a conference that shows off their new devices and possibly even their new modular framework titled Enyo, so that may be more what you are hoping for.