I'm very new to ArcGIS, I need to developed some sort of custom web part for SharePoint where i could use the ArcGIS API's to leverage the map, filters, and potentially sharepoint components (document library, list item). All of the map data points reside in external data sources (SQL). Can anyone recommend me a particular API to use, i'm looking at silverlight, javascript and .Net but they all seem to have some limitations as what i'm trying to accomplish.
Related
I successfully installed SenseNet Framework and it is running on my computer, but I don't know how to use this framework for our database to develop with my private website project and how to begin dev? can you help me ?
many thanks!
I'll try ro give an overview of the current possibilities (as of SenseNet version 6.5.4, because new options are coming in the near future).
Use SenseNet as a standalone web application
This is what you did: install the package and you get a full web app: portal UI and Content Repository (db). You can customize the GUI by creating a new skin or creating pages and moving portlets around on pages. Here are a few getting started links to begin with:
Getting started: using SenseNet
Getting started: building portals
Getting started: developing applications
About maintaining the project (e.g. backup, etc.) please take a look at the operator and dev articles on the wiki - or ask a specific question here :).
Use SenseNet as a backend service
Developers may build on the OData REST API we offer: you can manage content in the Content Repository through http requests (or using the client SDK from C#). This requires the same SenseNet installation as the first option, but you can keep your existing ASP.NET application and only make requests to the SenseNet rest api from your backend (it is also possible to make cross-site ajax calls from JavaScript, but you would have to deal with cross-site authentication in case of sensitive content).
Build an ASP.NET webforms or mvc app on top of SenseNet Content Repository
Currently this is a bit tricky as there is no 'how to' wiki article for this scenario. Basically you would be able to use your existing (or new) ASP.NET webforms or MVC application, and build on the Content Repository as a storage. This way you would loose the built-in UI and the possibility of making REST API calls to the repo (as it is possible in the previous options), but you could still connect directly to the repo usig the SenseNet C# api (this is called in-proc behavior).
To achieve this, you have to copy all the contents from the built-in SenseNet web.config to your app's web config file, and if you want to do some initialization stuff at startup (MVC or web api routing, etc.) than you will have to inherit from the built-in global class (called SenseNetGlobal), implement the usual methods (app start, app end, etc) and register it in the global.asax file in your web root. If you have the correct connection string and all the other values set up in web.config, you should be able to use the SenseNet api (e.g. load and manipulate content items, query the repo) from now on.
Edit: details on custom tables
Custom database tables
Regardless of which way you go, you can of course add your own custom tables to the SenseNet database. Before you do that, please consider storing your objects as regular Content items in the Content Repository though, that way you may benefit from the built-in features of the platform, e.g. indexing and permissions.
But if you already have a table structure you want to reuse or integrate, or it is easier to implement it independently from SN, you can store your custom data in the same database. We offer an API for accessing the database, you do not have to worry about connection strings and other stuff, you can simply use the SqlProcedure SenseNet helper class for executing direct SQL queries.
using (var cmd = new SqlProcedure { CommandText = "SELECT * FROM MyTable WHERE RefId = #MyId", CommandType = CommandType.Text })
{
cmd.Parameters.Add("#MyId", SqlDbType.Int).Value = myId;
var result = new List<int>();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
result.Add(reader.GetSafeInt32(0));
return result;
}
}
It is also possible to present or even edit external items (e.g. records in your custom table) using the built-in ASP.NET webforms user interface of SenseNet. The platform (with a small amout of development) is able to display external object with built-in field controls (e.g. short texts, dropdowns, etc) and let users manipulate them, without you having to create CRUD user interfaces from scratch.
Of course you can also build a custom UI using your existing dev skills and preferred controls.
I'm new in here maps and don't know
1- When I've to use the REST API instead of JavaScript API
as I know the REST API returns only xml or json object!
Does it mean I'll have to use the JavaScript API to do visual effects?!!!
2- also I don't know how to save the map to display it again to the user after he doing some changes on it.
1- When I've to use the REST API instead of JavaScript API as I know the REST API returns only xml or json object so,
Does it mean I'll have to use the JavaScript API to do visual effects and what are the advantages of using REST?!!!
[TCS] : The HERE Maps API for JavaScript is a set of programming interfaces that enable developers to build Web applications with feature rich, interactive HERE Maps at their center. Whereas HERE REST APIs provide a flexible and fast access to variety of map data and functionalities. The HERE Maps API for JavaScript 3.0 exposes the functionality of a collection of RESTful Web Services in the following four core components.
Yes, the REST API only provides responses in form of XML or JSON, to show it on a map you will need the Javascript API. You will find examples to explore on our playground on the link http://developer.here.com/api-explorer
2- How to create a drag-able route not a drag-able waypoint?
[TCS] : Dragable route is possible to implement , you will find an example on the following link
http://tcs.it.here.com/Examples/src/HLP3_Fleet.html
3- How to save the map to display it again to the user after he doing some changes?
[TCS] : We do not provide as part of our product portfolio to store any user related data once a session is terminated. A custom solution will have to be developed at your side if you would like to save any changes done on a map by a user and show these again when the user returns to the map.
If you would like to save the map as an image however that is possible using the 'Capture' functionality within the JS API. The following link also shows the Capture functionality
Is it possible to retrieve the data from a tpk?Means, is there a way to embed some information in tpk like address, region etc. and retrieve that information by means of querying
No, this wouldn't be possible.
Firstly according to the ESRI Documentation Tile Packages are solely for storing raster tiles, when displayed these tiles would show a user a map image but could not be queried interactively to identify or search for addresses / regions.
Additionally tile packages would not be practically accessible to web applications designed with the ArcGIS Javascript API. Tile packages are zipped file systems containing a large number of images, the usual way of making these tiles available to an application would be through a map service.
I would recommend for this type of functionality you view the examples on querying map services as a demonstration of what is available with the API.
We want to expose (through an API) big data collections that are a combination of flat file/binary files and xml files. Currently we do this with WCF Data Services (OData), and tranfer this data using a custom Untyped Data Provider as described in this tutorial (past 4): http://msdn.microsoft.com/en-us/data/gg191846
Performance is bad though and customization is hard, so we are thinking of 'upgrading' to ASP.NET Web API (2). Daniel Roth from the Web API team has given an interesting talk at TechEd2013 on the differences between WCF Data Services and Web API (see it here: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/DEV-B209) and at 1h06m he mentions briefly that 'Web API doesnt support untyped data yet, but it's coming'. I'm a little confused as to what this means for us. Does this mean that ASP.NET Web API is a no-go for us no matter what, or that we can move to Web API, but will (probably) still need a custom data provider? Any insight would be appreciated!
Looks like this update came at the right time: http://www.asp.net/visual-studio/overview/2013/release-notes
Type-less support
You can now build OData services without needing to define CLR types for your entity types. Instead, your OData controllers can take or return instances of IEdmObject, which are the OData formatters serialize/deserialize.
I have downloaded the sample app of ArcGIS Runtime SDK for Windows Store apps. It has one sample called "Dynamic Layers" which has four option. The third option is "Unique Value Renderer" which seems to be heat map. But that sample uses data from REST API.
So I want to show heat map with my own data. My data contains some stats respective to each countries. According to that data I want to produce heat map, how can I do that ?
I want to do something like this.
You will need to publish your data to an ArcGIS Server service, and change the layer ServiceUri to point to your ArcGIS Server service.
What format do you have your data right now? (or from what type of service is it coming?)
How to geoenrich applications with FeatureServices, Thanks to Antti Kajanus