-
Notifications
You must be signed in to change notification settings - Fork 132
Map Provider Gotchas
CloudMade does not support a stand-alone pan control; calling mxn.Mapstraction.addControls({ pan : true });
will have no effect.
The CloudMade mapping library supports five map tile types; web
, mobile
, mapnik
, osmarender
and cycle
. With the exception of the web
map type, none of these map to the standard Mapstraction map tile types, so effectively CloudMade only supports a single map tile type which corresponds to mxn.Mapstraction.ROAD
. Calls to mxn.Mapstraction.setMapType(type)
will have no effect and calls to mxn.Mapstraction.getMapType()
will always return mxn.Mapstraction.ROAD
.
The ESRI ArcGIS mapping library supports four stylesheet themes; the default for Mapstraction is claro
but you can also use themes called tundra
, soria
or nihilo
.
Regardless of which theme you choose, you need to ensure that you ...
- Include the correct stylesheet
- Set the HTML body tag to use the CSS class that corresponds to the theme
- For
claro
includehttp://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dijit/themes/claro/claro.css
. - For
tundra
includehttp://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dijit/themes/tundra/tundra.css
. - For
soria
includehttp://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dijit/themes/soria/soria.css
. - For
nihilo
includehttp://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dijit/themes/nihilo/nihilo.css
.
Each theme also requires that your web page's body
uses a style that corresponds to your theme. You can hardcode this into your web page ...
<body class="claro">
.. you can inject this via Javascript ...
<script type="text/javascript">
window.onload = function() {
document.body.className = 'claro';
};
</script>
... or, if you're using jQuery ...
<script type="text/javascript">
$(document).ready(function() {
$(document.body).addClass('claro');
});
</script>
ESRI needs the entire HTML document of your web page to have loaded and also needs all the map tiles for the viewport of your map at the required zoom level to have been loaded and cached by your browser before you can perform any other operation on the map.
Effectively this means that your web page needs to have a load event handler registered and this event handler needs to create your map, register a Mapstraction load
event handler and in this event handler you need to specify the center of your map and its zoom level.
In plain Javascript you'd do something like this ...
var map;
function load_map() {
map = new mxn.Mapstraction('map', 'esri');
map.load.addHandler(function(eventName, eventSource, eventArgs) {
latlon = new mxn.LatLonPoint(51.50730, -0.12763);
map.setCenterAndZoom(latlon, 12);
});
}
window.onload = function() {
load_map();
};
In jQuery you'd do something like this ...
var map;
function load_map() {
map = new mxn.Mapstraction('map', 'esri');
map.load.addHandler(function(eventName, eventSource, eventArgs) {
latlon = new mxn.LatLonPoint(51.50730, -0.12763);
map.setCenterAndZoom(latlon, 12);
});
}
$(document).ready(function() {
load_map();
});
In Dojo you'd do something like this ...
var map;
function load_map() {
map = new mxn.Mapstraction('map', 'esri');
map.load.addHandler(function(eventName, eventSource, eventArgs) {
latlon = new mxn.LatLonPoint(51.50730, -0.12763);
map.setCenterAndZoom(latlon, 12);
});
}
dojo.addOnLoad(function() {
load_map();
});
Google v2 supports a unified pan and zoom control, as a result calling mxn.Mapstraction.addControls()
and specifying the pan
argument will have the same effect as specifying the small zoom
argument or calling mxn.Mapstraction.addSmallControls()
.
Google v3 supports a unified pan and zoom control, as a result calling mxn.Mapstraction.addControls()
and specifying the pan
argument will have the same effect as specifying the small zoom
argument or calling mxn.Mapstraction.addSmallControls()
.
Leaflet supports a single size of unified pan and zoom control, as a result calling mxn.Mapstraction.addSmallControls()
, mxn.Mapstraction.addLargeControls()
or mxn.Mapstraction.addControls()
and specifying the pan
or zoom
arguments will all have the same effect, namely adding the unified pan and zoom control if it's not already visible.
Leaflet supports the mxn.Mapstraction.ROAD
and mxn.Mapstraction.SATELLITE
map types; the mxn.Mapstraction.HYBRID
and mxn.Mapstraction.PHYSICAL
map type are unsupported.
MapQuest supports a unified pan and zoom control, as a result calling mxn.Mapstraction.addControls()
and specifying the pan
argument will have the same effect as specifying the small zoom
argument or calling mxn.Mapstraction.addSmallControls()
.
MapQuest Open supports a unified pan and zoom control, as a result calling mxn.Mapstraction.addControls()
and specifying the pan
argument will have the same effect as specifying the small zoom
argument or calling mxn.Mapstraction.addSmallControls()
.
The Microsoft/Bing v6.3 mapping library encapsulates all the map controls into a single entity called the dashboard, the size of which can only be set before the map is loaded. As a result, regardless of what size of zoom control is requested, calling mxn.Mapstraction.addControls()
and requesting either the pan
control or the zoom
controls will only show a previously hidden dashboard if the dashboard is not already visible.
Microsoft/Bing v6.3 supports the mxn.Mapstraction.ROAD
, mxn.Mapstraction.SATELLITE and
mxn.Mapstraction.HYBRIDmap types; the
mxn.Mapstraction.PHYSICAL` map type is unsupported.
As with v6.3, v7 of the Microsoft/Bing mapping library supports a single dashboard containing all the map controls. Furthermore, the visibility of both the dashboard and the scale bar can only be set before the map is loaded and an overview map control is not supported at all. As a result, calling mxn.Mapstraction.addControls()
, mxn.Mapstraction.addSmallControls()
, mxn.Mapstraction.addLargeControls()
or mxn.Mapstraction.addMapTypeControls()
will have no effect.
As with v6.3, v7 supports the mxn.Mapstraction.ROAD
, mxn.Mapstraction.SATELLITE
and mxn.Mapstraction.HYBRID
map types; the mxn.Mapstraction.PHYSICAL
map type is unsupported.
Nokia supports a single size of zoom control, as a result calling mxn.Mapstraction.addControls()
and specifying the zoom
argument will have the same effect as calling mxn.Mapstraction.addSmallControls()
or mxn.Mapstraction.addLargeControls()
.
OpenLayers supports a unified pan and zoom control, as a result calling mxn.Mapstraction.addControls()
and specifying the pan
argument will have the same effect as specifying the small zoom
argument or calling mxn.Mapstraction.addSmallControls()
.
OpenLayers only supports a single map tile type which corresponds to mxn.Mapstraction.ROAD
. Calls to mxn.Mapstraction.setMapType(type)
will have no effect and calls to mxn.Mapstraction.getMapType()
will always return mxn.Mapstraction.ROAD
.
The OS OpenSpace mapping library supports maps for the United Kingdom only; in other words for England, Scotland, Wales and Northern Island.
OpenSpace also only supports a single map tile type which corresponds to mxn.Mapstraction.ROAD
. Calls to mxn.Mapstraction.setMapType(type)
will have no effect and calls to mxn.Mapstraction.getMapType()
will always return mxn.Mapstraction.ROAD
.
Ovi supports a single size of zoom control, as a result calling mxn.Mapstraction.addControls()
and specifying the zoom
argument will have the same effect as calling mxn.Mapstraction.addSmallControls()
or mxn.Mapstraction.addLargeControls()
.