Mapwize provides you indoor maps that you can use in your application to overlay data and locations.
With Mapwize places, defined using the Studio or the API, you can specify the location of rooms or assets in the building, However, in certain applications, it might be beneficial not to define places in Mapwize but to store the locations on your side instead.
If you wanted to show an outdoor map with locations on it, you would not store those locations in Google Maps or Mapbox. Actually, it would not even be possible to do so. Instead, you would display the outdoor map and overlay the locations that are of interest to you by storing the latitude and longitude of the locations on your side. The exact same scenario can be implemented with Mapwize.
Mapwize also uses latitude and longitude to specify the location of items in the world. However, we also add a 3rd coordinate: the floor. Floors are represented as decimal numbers and specify the floor number. For simplicity, we are not using elevation. The floors available in a venue are defined in Mapwize Studio when the maps are created. Each venue has a finite list of available floors.
Storing locations as points
If knowing the location of an object as a point is good enough for you, you can simply add the 3 fields latitude, longitude, and floor on the objects.
In your admin interface, simply embed Mapwize SDK (probably core is better, not UI). Then ask the user to click on the map to position on the object. Listen for click events and you'll get a latitude, longitude, floor that you can store. This will also work outside venues, but then the floor parameter will be null. When the user moves/zooms the map and enters a venue, the floorsChanged event will be triggered telling you about the floors available in that venue.
Storing locations as polygons
If you want to store locations as polygons, you will need to store the entire shape, as well as the floor. We advise you to store a serialized GeoJSON geometry. To create the geometry, you will probably need a more advanced editor than just a click on the map. Mapwize is built on top of Mapbox and therefore using mapbox-gl-draw is probably a good option.
When you want to display locations, you can integrate Mapwize SDK (core or UI depending on your needs) and overlay your locations with the provided APIs.
The simplest way to display point locations is to use Mapwize Markers, available in all SDKs. Simply create Mapwize Markers with the latitude, longitude, floor, and style that you want and add them to the map. The SDK will take care of rendering them and display them on the right floor. Markers with floor=null will always be displayed.
If the number of locations to be displayed becomes large, or if you want to have even more control over the rendering, we advise you to use the solutions provided by Mapbox and create a data source and a data layer. It's a bit more work but the possibilities are endless.
If you want to display polygons on the map, you could use the Mapbox annotations but you will probably want to look at the data source and data layers as well.
To compute directions from one point to another, you can use your latitude, longitude, floor points directly in the API. However, you will need to specify the venue in which each point is. At the moment, getting directions between different venues is not supported, and the venue a point belongs to is not detected automatically.
Waypoints direction as well as distances API also support your own latitude, longitude, floor as input.