Injecting Location Updates into MazeMap

The MazeMap webview allows you to send in custom location updates, allowing you to define where the blue dot should be shown.

This is done by performing a Javascript command in the MazeMap webview.






Performing JavaScript commands in a webview

 In Android, use WebView.postWebMessage to send the message. If you must support an older Android SDK which does not implement postWebMessage, you can alternatively use evaluateJavascript(), e.g.:


String js = "var msg={ ... }; window.postMessage(msg,'*');"; webview.evaluateJavascript(js);


In a similar fashion, evaluateJavaScript() can be used in iOS:

String js = "var msg={ ... }; window.postMessage(msg,'*');"; wkwebview.evaluateJavaScript(js);

The Javascript Command

var msg = {
    type: 'MM_INJECTABLE_LOCATION_UPDATE',
    data: {
        latlng: {
            lat: 63,
            lng: 10.5
        },
        accuracy: 500,    // In meters
        mm_z: 3,    // Optional numerical z-level
    }
};
window.postMessage(
    msg,
    '*'    // The "origin" of the destination window, which can be
        // replaced by the domain name of the currently loaded webpage.
);

Coordinates

The coordinates must be WGS84 latitude and longitude values.

If you are using a third party location source/SDK that provides coordinates in another format, you will need to convert them before sending them to into the MazeMap web view.


Z-Level (mm_z)

Z-level is a MazeMap-proprietary value that defines floors/altitude.

Third party location providers will likely use their own proprietary floor level or floor ID values.

You may need to create and maintain a mapping between MazeMaps z-levels and the third party providers floor IDs.