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