Floorplan with GPS location markers - codenameone

I want to be able to display a floor plan with pan / zoom capability and overlay location markers using GPS coordinates (similar to the uber clone but with a location plan as the base rather than a map).
What would be the best avenue to explore?

You can use the location manager to get a location listener. You can use the lat/lng values from the location listener to position the image correctly using either an image viewer or manually using drawImage (from Graphics). You would need to know the latitude and longitude values corresponding to the image corners so you can position the image correctly.

Related

Mapping Lat And Lon on a blank page

VB.net, WPF
Been researching for a while and come across nothing that is exactly what im looking for
Basically I am required to make a program that can map area covered by a machine this map can be either be a polygon covering a white screen or a polygon overlaying an offline satellite/Street map.
I have the NMEA serial GPS setup and running perfectly however I am now required to store the Lat and lon data of the machine for each second tick and then overlay this as a polygon map for area covered.
The machine width will be set by the user and map area covered with the GPS.
My Question.
Is there a way I can overlay a gps generated coverage map on either a white screen or an offline street map?
I think I understand what you're trying to achieve here.
You can draw the coverage of your machine as a circle of machine width on a canvas. See here for a tutorial
When it comes to converting your lat/long to pixels for the centre of your machine you need to account for the projection of the chart. Lat/Long describes a location on the surface of a sphere. However your map is a flat 2d shape. To enable us to plot these points the maps are squished using a projection, the most common of which is the mercator projection
Here's an example of transforming lat / long for mercator: Covert latitude/longitude point to a pixels (x,y) on mercator projection

Draw vertical line for a position in angularjs

I want draw a line for a position on google maps. e.g. I want draw a vertical line for London city in this location 51.5072° N, 0.1275° W.
I use ionic framework and maps template. How I can draw vertical line for it?
and How I can set current location for displaying?
thank u!
You would like to draw a vertical line from London to what city? You can create a Polyline from London to another location.
If you would like to draw a line that is simply vertical, you could just specify another point in the polyline with a different longitude but same latitude as London.
For your second question, I assume that you mean setting the center of the map. Simply call setCenter(latlng) on your Map object. Details here.
EDIT:
If you want to set the user's current location as the center, use the navigator.geolocation property. Call map.setCenter() with the returned latitude and longitude. There is an example here.

Plot a known pixel (x,y) from original image using custom Bing Maps WPF tiles

I am trying to use the Bing Maps WPF control to render custom map tiles from an image of a fictional game world map, but I also need to plot X,Y values on the map from the original world image (sort of like an in-world GPS).
The image is 5720x5720 and I already have working (in a different application) a function that manually crops, scales and redraws sections of the image and plots the pixelX and pixelY coordinates in a PictureBox. I would like to get the same functionality working using the map control.
I used this Photoshop plugin to cut the tiles from the original custom image (works like maptiler for google mapes)
https://github.com/bramus/photoshop-google-maps-tile-cutter/
The problem is I know the X,Y values to plot from the original image, but I'm not not quite sure how to calculate Lat/Long for drawing a point in the custom tile system.
<m:Map Name="Map">
<m:Map.Mode>
<!-- set empty map mode, i.e. remove default map layer -->
<m:MercatorMode/>
</m:Map.Mode>
<local:MyTileLayer UriFormat="file:///C:/map_tiles/{z}_{x}_{y}.jpg"/>
</m:Map>
The map is displaying great and everything looks fine using the custom map tiles. I found this link that provides a class for converting PixelXY to LatLong in the TileSystem, but they are all for realistic world points.
https://msdn.microsoft.com/en-us/library/bb259689.aspx
My custom map tiles are actually for a fictional map for a game so I don't believe the projection and earth-curvature calculations are needed in my situation.
How might I go about plotting a point accurately in the Bing Maps WPF control if I only know the X,Y pixel coordinates from the original untiled image?
Given that your 5720x5720px map image covers the standard Bing Maps (or Google Maps or OpenStreetMap) coordinate range of longitude = -180..180 and latitude = -85.0511..85.0511, the following method would convert from image pixel coordinates to lat/lon according to the Mercator projection:
public static void PixelXYToLatLon(
double pixelX, double pixelY, out double latitude, out double longitude)
{
var imageSize = 5720d;
var maxLatitude = 85.05112878; // = Math.Atan(Math.Sinh(Math.PI)) / Math.PI * 180d;
var y = (0.5 - pixelY / imageSize) * (2d * maxLatitude);
latitude = Math.Atan(Math.Sinh(y * Math.PI / 180d)) / Math.PI * 180d;
longitude = (pixelX / imageSize - 0.5) * 360d;
}
The imageSize variable might of course also be a method parameter.
If you use MapTiler (http://www.maptiler.com) to create the tiles you have two ways how to achieve what you want:
A) Map your game map to the artificial world with Lat/Lon coordinates
In this case you will map the world coordinates to your pixel coordinates. The tiles must be prepared in a correct way, same as those for real world maps.
To create the tiles with MapTiler you should follow this steps:
Choose "Mercator tiles" in the first step
Drop in your image file
Choose "Web mercator (EPSG:3857)" in the dropdown in the "Coordinate system" dialog - it is a square image of the whole world and you don't want to deform it.
Choose "Bounding box (West South East North)" in the dialog "Geographical location" and copy&paste in the input the world coordinates: "-20037508.342789244 -20037508.342789244 20037508.342789244 20037508.342789244"
Render the tiles
With this approach you can load the tiles in your Bing Maps WPF control and position the markers or other data by using Lat/Lon coordinates.
The point [0,0] is going to be center of the image, and you can calculate the other lat/lon coordinates appropriately.
See this page and source code down on the page:
http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/
The globalmaptiles.py code embedded in the page is available in different languages including C# (.cs) if you need it. It has been ported by other people from our code.
B) Stay in raster coordinates
A different approach - where you create the map tiles in the original raster coordinates of the input file. There are no Lat/Lon involved, coordinate system is in pixels and you can draw markers and polygons in pixel coordinates as well. MapTiler gives you sample JavaScript viewer in Leaflet and in OpenLayers. Other viewers you have to patch yourself for using with pixel coordinates. To generate the tiles just choose "Raster tiles" - as in this tutorial: http://youtu.be/9iYKmRsGoxg?list=PLGHe6Moaz52PiQd1mO-S9QrCjqSn1v-ay
I expect the tiles made with your Photoshop plugin are going to be similar to the raster coordinates made with MapTiler.

Is there a documentation on how to use weather overlay from noaa.gov?

I am trying to add a weather overlay to my maps , the tile images on Noaa.gov are what i want but i couldn't find any documentation on how to construct url to consume & arrange tiles of overlays for a given lon/lat. below is the a sample url that returns a single tile.
http://radarcache.srh.noaa.gov/tc/tc.py/1.0.0/ridge::NAT-N0Q-201211191510/8/62/97.png
update:
The web service i am working on generates a sectional aviation chart/map for a given lon/lat dimension and zoom level . one of the overlays i am rendering on top of the generated base map is weather(radar reflective ..)
based on the information i have (lon/lat, dimension and zoom level) i want to render weather overlay on top of my base map.
the challenge i am facing is how do i get weather overlay using lon/lat ?
After researching a lot i found out that NOAA Tile System uses this Tile arrangement, based on that i was able to get PNG images overlay for a given (lon/lat/zoom) as follows
http://ridgewms.srh.noaa.gov/tc/tc.py/1.0.0/ridge::NAT-N0Q-{0:yyyyMMddHHmm}/{1}/{2}/{3}.png
Where
{0:yyyyMMddHHmm} = date time in 5 minute increments
{1} ZoomLevel
{2} X or tile column
{3} Y or Tile Row
Without more information about what you are trying to integrate into, here is what I know. If you want to create a custom KML file, there is this page that will do that for you. For more info about other layers, check out this page as well.
If you provide more info about your environment, we might be able to help with more specifics.
EDIT:
For just the transparent gifs, see this page here http://forecast.weather.gov/jetstream/doppler/ridge_download.htm
There is quite a bit of information for downloading actual data here http://www.ncdc.noaa.gov/oa/radar/radardata.html

Custom Map Image WIndows Phone 7

I have custom map image with specific height and width.
i need to map x-y coordinates of image to latitude longitude from four corner latitude longitude available.
this requirement is for fulfill current location of user into custom image map.
more on this on image i have specific few points on image, based on current position of user, i need to find near by point on image in Windows Phone Application.
Thanks in advance.
If you are using the Bing Maps Silverlight Control for WP7, there are APIs for want you want to achieve.
The Map class for example provides methods LocationToViewportPoint and ViewportPointToLocation for converting coordinates.
There is also the class MercatorUtility which provides helpful methods like LocationToLogicalPoint and LogicalPointToLocation.
However, depending on what you mean with custom map image, nobody except you would possibly know how it maps to view coordinates.

Resources