Deep Linking

The main state of MMGIS can be saved and shared by manipulating the URL. The following parameters describe the specifics of that state. Additionally there’s a green “Copy Link” icon in the MMGIS toolbar that constructs these URLs. Those URLs are initially shortened but can be navigated to to view their expanded form in the address bar.

Parameters

mission=
<mission name>

The mission to navigate to.

  • form: <string>
  • dependencies: NONE
  • unset: Will direct to a landing page to choose a mission. If there exists only one configured mission, then automatically go to it.

site=
<site code>

The site described in the SitesTool to navigate to.

  • form: <string>
  • dependencies: SitesTool
  • unset: If the SitesTool is enable and has sites, it will default to the first defined site.

mapLon=
<longitude>

  • form: <float>
  • dependencies: mapLat, mapZoom
  • unset: Will default to the initial view

mapLat=
<latitude>

  • form: <float>
  • dependencies: mapLon, mapZoom
  • unset: Will default to the initial view

mapZoom=
<zoom level>

  • form: <positive integer>
  • dependencies: mapLon, mapLat
  • unset: Will default to the initial view

globeLon=
<longitude>

  • form: <float>
  • dependencies: globeLat, globeZoom
  • unset: Will default to the initial view

globeLat=
<latitude>

  • form: <float>
  • dependencies: globeLon, globeZoom
  • unset: Will default to the initial view

globeZoom=
<zoom level>

  • form: <positive integer>
  • dependencies: globeLon, globeLat
  • unset: Will default to the initial view

globeCamera=
<posX>,<posY>,<posZ>,<tarX>,<tarY>,<tarZ>

Defines the 3d coordinates [posX, posY, posZ] of where the Globe camera is position and points the Globe camera to look at [tarX, tarY, tarZ]. The Globe view is always centered at 0,y,0 with the y-axis up.

  • form: <float,float,float,float,float,float>
  • dependencies: NONE
  • unset: Will default to an initial top-down view

panePercents=
<viewerPercent>,<mapPercent>,<globePercent>

How much to open each panel. All three values should add up to 100. 0,100,0 would be the map covering the whole screen. 0,50,50 would be the screen split half way between the map and globe.

  • form: <float,float,float>
  • dependencies: NONE
  • unset: Will default to 0,100,0

on=
<name>$<opacity>,<name>$<opacity>...

The name of the layer that’s on and its opacity. When using the on parameter, all unlisted layers are deemed off. If a site is defined in the URL, the site’s layers will turn on regardless.

  • form: <string$float,string$float,string$float,...>
  • dependencies: NONE
  • unset: Only layers visible by default will be on

centerPin=
<hoverText>

If a map latitude and longitude is set and centerPin has a value, then render a pin on the map at the its center. The value of centerPin becomes the pin/marker’s mouse over text. If centerPin=true (or ‘’), then there is no mouse over text for the pin. This parameter is useful when you want to link to a specific coordinate on the map and maintain its location for the user rather than just setting the initial map view.

  • form: <hoverText> || true || ''
  • dependencies: mapLon, mapLat
  • unset: No center point pin will be displayed

selected=
<layer name>,<lat>,<lon>,<view (opt)>,<zoom level (opt)>
<layer name>,<key>,<value>,<view (opt)>,<zoom level (opt)>

The feature of a layer to have selected. If lat and lon are both numbers, the first point in layer name with coordinates lat lon will be selected. Otherwise it’ll be treated as a key value search. Under key value the first feature in layer name whose properties.<key> matches value gets selected. key supports nested properties with dot notation (“buildings.stores.candy”). The selected layer name layer will always be turned on regardless of what the other parameters may say. view and zoom level are optional. If view is set to “go”, the selection would not only be made but also panned to. zoom level sets the zoom of view's “go”. If zoom level is unset but view is set, it will default to the Zoom Level of Map Scale configuration value if set or finally the Initial Zoom Level configuration variable.

  • form: <string,float,float,string,integer | string,string,string,string,integer>
  • dependencies: NONE
  • unset: No feature will be selected

viewerImg=
<index>

The index of the list of image products within the viewer. The viewer will only be populated with this list if a feature with image products is selected. The viewer captures any image, dzi, obj URLs found within the selected point’s metadata to form this list.

  • form: <integer>
  • dependencies: NONE
  • unset: Will default to the first image (if any)

viewerLoc=
<posX>,<posY>,<w>,<h> (boundingbox for images)
<tarX>,<tarY>,<tarZ>,<fov> (target and field of view for photosphere)
<posX>,<posY>,<posZ>,<tarX>,<tarY>,<tarZ> (position and target for models)

  • Bounding box is a top-left origined bounding box.
  • Photosphere describes the camera’s target and its field of view. Field of view in the photosphere is effectively zoom.
  • Model is of the same form as globeCamera

The view of the image. The viewer supports regular images, spherically projected images and models and this parameter should match the view type of the image at viewImgs index.

  • form: <float,float,integer,integer | float,float,float,float | float,float,float,float,float,float>
  • dependencies: NONE
  • unset: Will default to an initial view

forcelanding=
<boolean>

If no mission is set in the URL, there exists only one configured mission and forcelanding is set to “true”, then the landing page will not automatically redirect to the only configured mission.

  • form: <boolean>
  • dependencies: mission is unset
  • unset: The landing page will redirect to the only mission if there exists only one configured mission

startTime=
<start time>

Sets the start time for the Time Control feature.

  • form: <string> (that moment.js understands)
  • dependencies: Time Control to be enabled
  • unset: Will default to current time if Time Control feature is enabled

endTime=
<end time>

Sets the end time for the Time Control feature.

  • form: <string> (that moment.js understands)
  • dependencies: Time Control to be enabled
  • unset: Will default to current time if Time Control feature is enabled

Examples

General

https://<domain>/?mission=MSL&site=GAC&mapLon=137.36826181411746&mapLat=-4.676391308143136&mapZoom=16&globeLon=137.3738&globeLat=-4.674800000000008&globeZoom=16&globeCamera=673.9200228913286,3890.288691365299,-1563,0,4423.768073682673,0&panePercents=32.64331210191082,45.1167728237792,22.23991507430998&on=ChemCam$1.00,Waypoints$0.57,Traverse$1.00,GPR_1$1.00,HiRISE$1.00,Aeolis%20Palus$1.00&selected=Waypoints,-4.675793594577601,137.36642934025107&viewerImg=0&viewerLoc=0.04430,0.05091,-0.03785,37.5

Selecting and navigating to a feature in a layer named Published Strategic Targets by its property uuid

https://<domain>/?mission=<mission>&selected=Published%20Strategic%20Targets,uuid,a6222bca-6c51-4647-b28c-70b5e2d05886,go

Selecting and navigating to a feature in a layer named Tactical Targets by its nested property data.uuid

https://<domain>/?mission=<mission>&selected=Tactical%20Targets,data.uuid,170e096a-75c9-4db5-be64-d713e3a40955,go

Selecting and navigating to a feature in a layer named End of Drive by its property site_pos

https://<domain>/?mission=<mission>&selected=End%20of%2Drive,site_pos,<site>_<pos>,go