Google maps api verzió eltérései (objektum tulajdonságokban)
Óvatosan kell bánni a GMAP API használatával mert nem várt hibákat okozhatnak a verzió váltások. Ha konkrét API verziót nem adunk meg, akkor a legfrissebbet használva előjöhetnek nem várt program működések.
Lehetőleg inkább használjuk a setPosition(), getPosition() függvényeket objektum pozíció beállítás és kiolvasásra. Ha objektum tulajdonságot használunk óvatosnak kell lennünk.
Nyitott verzió megadásnál (itt gond lehet az idő nullásával):
<script src ="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
Objektum tulajdonságok:
Geometry: Object
bounds: rh
location:
D: 18.98778040000002
k: 47.7240115
Geometry: Object
bounds: rh
location:
D: 18.98778040000002
k: 47.7240115
Kiolvasás és pozicionálás:
map.getView().setCenter(ol.proj.transform([results[0].geometry.location.D, results[0].geometry.location.k], 'EPSG:4326', 'EPSG:3857'));
Konkrét verzió megadás esetén :
<script src ="https://maps.googleapis.com/maps/api/js?v=3.19"></script>
Objektum tulajdonságok:
Geometry: Object
bounds: rh
location: qf
A: 47.7240115
F: 18.98778040000002
Geometry: Object
bounds: rh
location: qf
A: 47.7240115
F: 18.98778040000002
Kiolvasás és pozicionálás:
map.getView().setCenter(ol.proj.transform([results[0].geometry.location.F, results[0].geometry.location.A], 'EPSG:4326', 'EPSG:3857'));
Milyen egyszerű vagy bonyolult azt legjobban a megvalósítás mintákból lehet leszürni.
function init() {
var bounds = new L.LatLngBounds(
new L.LatLng(45.618357, 15.846121),
new L.LatLng(48.780321, 23.005039));
var map = L.map('map').fitBounds(bounds);
).addTo(map);
var options = {
minZoom: 4,
maxZoom: 7,
opacity: 1,
tms: false
};
L.tileLayer('{z}/{x}/{y}.png', options).addTo(map);
}
<script>
var moonTypeOptions = {
getTileUrl: function(coord, zoom) {
console.log(coord);
console.log(zoom);
var normalizedCoord = getNormalizedCoord(coord, zoom);
if (!normalizedCoord) {
return null;
}
var bound = Math.pow(2, zoom);
var fin = "./" + zoom + "/" + coord.x + "/" + coord.y + ".png";
console.log(fin);
return fin;
},
tileSize: new google.maps.Size(256, 256),
maxZoom: 7,
minZoom: 4,
radius: 1738000,
name: "Test"
};
var moonMapType = new google.maps.ImageMapType(moonTypeOptions);
function initialize() {
var myLatlng = new google.maps.LatLng(42, 28);
var myOptions = {
center: myLatlng,
backgroundColor : "#000000",
draggableCursor: "default",
zoom: 5,
backgroundColor: '#000',
streetViewControl: false,
mapTypeControl : false,
mapTypeId: 'moon'
};
$('#map_canvas').width(window.innerWidth).height(window.innerHeight);
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
map.mapTypes.set('moon', moonMapType);
map.setMapTypeId('moon');
}
function getNormalizedCoord(coord, zoom) {
var y = coord.y;
var x = coord.x;
var tileRange = 1 << zoom;
if (y < 0 || y >= tileRange) {
return null;
}
if (x < 0 || x >= tileRange) {
x = (x % tileRange + tileRange) % tileRange;
}
return {
x: x,
y: y
};
}
</script>
<script type="text/javascript">
var map, layer;
var mapBounds = new OpenLayers.Bounds(15.846121, 45.618357, 23.005039, 48.780321);
var mapMinZoom = 4;
var mapMaxZoom = 7;
function init() {
var options = {
projection: "EPSG:3857",
displayProjection: "EPSG:4326",
numZoomLevels: 5
};
map = new OpenLayers.Map('map', options);
layer = new OpenLayers.Layer.XYZ("MapTiler layer", "${z}/${x}/${y}.png", {
transitionEffect: 'resize',
isBaseLayer: false
});
var osm = new OpenLayers.Layer.OSM();
var gmap = new OpenLayers.Layer.Google(
"Google Streets", {numZoomLevels: 7}
);
var ghyb = new OpenLayers.Layer.Google(
"Google Hybrid",
{type: google.maps.MapTypeId.HYBRID, numZoomLevels: 7}
);
var gsat = new OpenLayers.Layer.Google(
"Google Satellite",
{type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 7}
);
var gphy = new OpenLayers.Layer.Google(
"Google Physical",
{type: google.maps.MapTypeId.TERRAIN}
);
map.addLayers([
layer, osm, gmap, gsat, ghyb, gphy
]);
map.zoomToExtent(mapBounds.transform(map.displayProjection, map.projection ));
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.Permalink());
map.addControl(new OpenLayers.Control.LayerSwitcher());
}
</script>
<body>
<div id="map" class="map"></div>
<script>
var map = new ol.Map({
target: 'map',
renderer: 'canvas',
layers: [
new ol.layer.Tile({
source: new ol.source.XYZ({
url: './{z}/{x}/{y}.png',
minZoom: 4,
maxZoom: 7,
tilePixelRatio: 1
})
})
],
view: new ol.View({
center: ol.proj.transform([19.6350, 47.2964], 'EPSG:4326', 'EPSG:3857'),
zoom: 5
})
});
var myFullScreenControl = new ol.control.FullScreen();
map.addControl(myFullScreenControl);
</script>
</body>
</html>
Néhány hasznos online eszköz:
– JSON: JSONLint
http://www.jsonlint.com
http://www.jsonlint.com
– GeoJSON: GeoJSONLint
http://www.geojsonlint.com
http://www.geojsonlint.com
– KML: FEED Validator
http://www.feedvalidator.org
http://www.feedvalidator.org
– OGRE: http://ogre.adc4gis.com
– GPSVisualizer/GPSBabel:
http://www.gpsvisualizer.com/gpsbabel/
http://www.gpsvisualizer.com/gpsbabel/
– GPSBabel: http://www.gpsbabel.org
– ogr2ogr: http://www.gdal.org/ogr2ogr.html
– gdal http://www.gdal.org/
Leaflet-ről már írtam, hogy nyílt forráskódú JavaScript könyvtár mely mobilbarát interaktív webes térképek megjelenítésére szolgál.
De hogyan is használja a térkép fájlokat? Hogyan használjuk? …
Forráskód minta:
L.tileLayer('http://{s}.mierdekel.hu/{z}/{x}/{y}.png', {
attribution: 'Map data © mierdekel.hu ',
maxZoom: 18,
}).addTo(map);
Az alábbi paraméterek alapján betölti a térképet.
http://{s}.mierdekel.hu/{z}/{x}/{y}.png
– {s} (subdomain) => Azonos tartalmú sorszámozott szerverek aldomén nevek (A gyorsaság növelésére akár több párhuzamos kéréssel is képes dolgozni.)
– {z} (zoom) => nagyítás mértéke
– {x} és {y} => meghatározza a rész koordinátákat
http://{s}.mierdekel.hu/{z}/{x}/{y}.png
– {s} (subdomain) => Azonos tartalmú sorszámozott szerverek aldomén nevek (A gyorsaság növelésére akár több párhuzamos kéréssel is képes dolgozni.)
– {z} (zoom) => nagyítás mértéke
– {x} és {y} => meghatározza a rész koordinátákat
Tile elemi képek és leképzési elve:
Valóságos alap (példa) definíció és forrás:
<!-- HTML HEADER-rész api és hozzátartózó stilus betöltése --> <!DOCTYPE html> <html> <head> <title>Simple Leaflet Map</title> <meta charset="utf-8" /> <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7/leaflet.css" /> <script src="http://cdn.leafletjs.com/leaflet-0.7/leaflet.js"> </script> </head> <!-- HTML BODY-rész alap map DIV és JS program --> <body> <div id="map" style="width: 800px; height: 600px"></div>
<script
// térkép réteg alapdeffinició
var map = L.map('map').setView([47.2, 19.2], 14);
mapLink = '<a href="http://openstreetmap.org">OpenStreetMap</a>';
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© ' + mapLink + ' Contributors',
maxZoom: 18,
}).addTo(map);
// Jelőlőpont felvétele
var marker = L.marker([47.2, 19.2] // jelőlő poziciója
,{
title: 'Hover Text', // toltip szöveg (egér felé állásra megjelenő)
acity: 0.5, // ikon átlátszóság
draggable: true // mozgatható
}
)
.bindPopup("<b>MIE tile szöveg</b>")
// .openPopup() // azonnal megnyít, és látható marad
.addTo(map);
// vonal rajzolás
var polyline = L.polyline([
[47.0, 19.0], // vonalszakaszok poziciói
[47.2, 19.2],
[47.3, 19.5],
[47.5, 19.2]],
{
color: 'blue', // vonal szín
weight: 5, // vonal vastagság
opacity: .5, // átlátszóság
dashArray: '8,5', // szaggatása a vonalnak
lineJoin: 'round' // vonalvégek lekerekítettek
}
).addTo(map);
// Zárások (JS, BODY, HTML) </script> </body> </html>
Specialitások:
Több (választható) térkép rétegek kezelése
Több (választható) térkép rétegek kezelése
var osmLink = '<a href="http://openstreetmap.org">OpenStreetMap</a>', thunLink = '<a href="http://thunderforest.com/">Thunderforest</a>';
var osmUrl = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
osmAttrib = '© ' + osmLink + ' Contributors',
landUrl = 'http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png',
thunAttrib = '© '+osmLink+' Contributors & '+thunLink;
var osmMap = L.tileLayer(osmUrl, {attribution: osmAttrib}),
landMap = L.tileLayer(landUrl, {attribution: thunAttrib});
...
var baseLayers = {
"OSM Mapnik": osmMap,
"Landscape": landMap
};
L.control.layers(baseLayers).addTo(map); // rétegkezelő meghívása paraméteresen
Réteg csoport (együtt kezelt objektomok összefogása):
var mieLayerGroup = new L.LayerGroup();
L.marker([47.0, 19.0])
.bindPopup('Te Papa').addTo(mieLayerGroup),
L.marker([47.2, 19.2])
.bindPopup('Te Papa').addTo(mieLayerGroup),
L.polyline([ [47.0, 19.0], // vonalszakaszok poziciói [47.2, 19.2], [47.3, 19.5], [47.5, 19.2]] ).addTo(mieLayerGroup);
Rétegcsoport felvétele a rétegválasztásra:
var overlays = {"MIE saját helyek": mieLayerGroup};
L.control.layers(baseLayers,overlays).addTo(map);
További doksik forrása:
Megjegyzések
Megjegyzés küldése