I'd like to embed a map into a Windows Store App. I'd like smooth zooming / panning and to pin interactive elements to geographical locations.
I assume my alternatives are either Bing Maps or Google Maps? Should I go with embedding a browser control and if so, is it difficult to control/interact with programmatically?
Any other alternatives?
Thanks
You could try
http://www.codeproject.com/Articles/408457/Using-Bing-Maps-For-Windows-8-Metro-Apps-Csharp-Ja
In haven't tried it myself , but I am about to and will post findings.
Related
I have a Leaflet website that uses a custom tile set for a game map.
I want to display in my C# client app, tiles from the Leaflet map using basically the same algorithm, as if re-creating leaflet in C#.
I already have the placeholder tiles layed out in a grid and have basic navigation, but running into the problem of knowing the tile values to use for the URL (from leaflet docs):
'http://map.somedomain.com/{layer}/{z}/{x}/{y}.png'
I have the layers names, and I want to know the exact X,Y for each tile from a provided zoom level.
How can I calculate this so that when I send out a download request it doesn't hit file not found?
Hope that makes sense.
Thank you.
PS: I don't have access to windows forms, I am using Unity3D engine, if that makes a difference.
I think you would be best off by going over the sourcecode of L.GridLayer which L.TileLayer is extended from. The _pruneTiles function would be a good starting point:
https://github.com/Leaflet/Leaflet/blob/master/src/layer/tile/GridLayer.js#L204
You Can find a tutorial for embedding Leaflet in a C# app in this book:
Leaflet.js Essentials - Chapter 6
I have an application with Google maps in it. Currently the maps are rendered in a WebBrowser via the Maps Javascript API.
I have a requirement to make the map interact with the application. Specifically, I have placed markers on the map. The winform needs to register when one of them is clicked, double clicked, etc. and know which one it was. If the user right-clicks on a blank area on the map, I need some way of registering both where to draw the context menu and the lat/long that pixel represents geospatially.
I don't care whether the map remains in a webbrowser control or is replaced with something else. If needed, I can tear the whole thing out and put a new map in there - but it should be Google (because we have the expensive enterprise API) and it absolutely has to remain inside the winform.
How can I accomplish this interactivity?
Almost missed the part where you said you're willing to replace the web version with something else.
Have a look at Great Maps - for Windows Forms and WPF. It is a custom WinForms control you can drop on a form.
It supports a lot of map providers, Google Maps included. They have a demo with which you can play and see how it works and how it can be integrated.
From experience, I can say that it is possible (quite easily) to bind to map events (marker clicked, double clicked as well).
Something worth noting is that using Google Maps with it might violate Google's terms of use (you also get a warning in the demo app). You can always explore some of the free providers, like OpenStreetMap.
I would not use Great Maps for windows forms and wpf (GMap.Net) because it violates Google Map Usage Terms by accessing Google Map Tiles directly.
You can host one by yourself if you follow this link:
https://github.com/mchall/GoogleMapsApi.
Or you can use one free WPF control at:
https://archive.codeplex.com/?p=wpfgooglemap.
We use GDS Google Map. It is not free, but affordable. It does what we need.
I have decided to design a desktop forms application in Visual C# 2012 which will download google map images within user specified coordinate and zoom level. Actually, the target is to create offline map as jpeg. Later I'll have to join the downloaded images also! Can anyone please help me on this issue?
Note: I will not display any web page. I just want to download the direct image from google maps as per specification on zoom level and coordinate.
Regards.
Have you checked GMap.NET? "Great Maps for Windows Forms and Presentation"
http://www.codeproject.com/Articles/32643/GMap-NET-Great-Maps-for-Windows-Forms-and-Presenta
http://greatmaps.codeplex.com
We are investigating the potential use of Bing Maps WPF control in OFFLINE mode (which will be called MercatorMode in the control). OFFLINE mode implies that we download on a desktop machine the tiles for different zoom levels and then the WPF control accesses these pre-saved tiles instead of connecting to the Internet. Technically this scheme works perfectly.
What is unclear right now is how to obtain (download) the tiles without violating any Bing Maps license rules. So it raises two questions:
Whether there exists a way to officially download Bing Maps tiles
Whether it is officially allowed to use the control in the OFFLINE
mode (assuming that we’ve got some tiles from some source of tiles)
The legal documentation for Bing Maps is rather confusing than clarifying. So we’d like to ask about the particular experience of other developers.
Our ultimate goal is to have:
a good WPF control for maps (which is a natural WPF control, not just a
wrapper over a WinForms control) supporting OFFLINE mode
a legal source of tiles to be used in the OFFLINE mode (costs are
not an issue – we are ready to pay for tiles)
Maybe the community would suggest another pair WPF Control + data source for tiles. We do not need any deep level of zooming since we plan to use the control and tiles only for drawing the borders of countries (excluding extremely small countries).
Right now we see that Bing Maps as a data source also supports Bing Maps WPF control, but the licensing terms are a real mess.
PS
We are developing an “in-house” desktop application which will be used internally in our organization while the Bing Maps license never explicitly references desktop applications while mentioning web-applications and Windows Store. Does anybody know whether Microsoft intentionally doesn’t mention the desktop applications?
None of the Bing Maps controls can be used offline. This is against the terms of use. MercatorMode is not an offline mode, this is just a mode which all the standard map views inherit from and which you can use to have a blank background to a custom tile layer. The Map control will always need to have access to the internet otherwise it will not be able to authenticate the map. When it can't authenticate the map an error is thrown. You can handle this error such that it disables the map instead of crashing the app by using the following code sample: http://rbrundritt.wordpress.com/2012/04/05/bing-maps-wpf-internet-connection-issue/
For an offline map control solution take a look at GMap.NET: http://greatmaps.codeplex.com/
Telerik has a nice Map control which supports:
Rich geographical context for large volumes of data
Heat maps
Multiple tile layers
Multiple Map Providers
Support for Bing Maps, OpenStreetMaps, custom map providers, as well
as visualization of geospatial data.
You can try https://greatmaps.codeplex.com/ which works fine in WPF/Offline mode. First you may have to use their application to download the desired maps at all zoom levels. The maplets are stored in SQLLite database which you may consume in your WPF application. The entire source code along with the map control in WPF is also available there.
My app uses bing map control. I've created new tilelayer with google map(
http://mt0.google.com/vt/lyrs=y&z={0}&x={1}&y={2}
) but it doesn't work. I've read something about google doesn't support windows phone. Is it my case too? After that I've tried openstreetmap and it is ok, but no satellite images. Other choice is Nokia map, but I don't know how to use satellite images. This link is from nokia website(
http://maptile.maps.svc.ovi.com/maptiler/v2/maptile/newest/normal.day/{0}/{1}/{2}/256/png8?token={3}&app_id={4}&lg={5
}) no item to place viewmode.
Any suggestions?
thanks
Do you want to use bing maps or google maps? i suggest bing