Rumah >hujung hadapan web >tutorial js >OpenLayers - Alternatif kepada Peta Google
OpenLayers: Alternatif yang kuat dan disesuaikan untuk Google Maps
OpenLayers menawarkan alternatif yang menarik kepada Peta Google, menyediakan pilihan penyesuaian yang luas dan sokongan untuk sumber peta yang pelbagai termasuk WMS, WMTS, Peta Bing, dan OpenStreetMap (OSM). Tidak seperti Peta Google, OpenLayers membenarkan penggunaan dalam bahagian laman web yang disahkan.
Kelebihan Utama:
mengapa memilih OpenLayers melalui Peta Google?
Ramai pemaju biasa dengan API Peta Google dan Bing Maps untuk menambah peta interaktif ke laman web. Walau bagaimanapun, Peta Google menyekat penggunaan di kawasan yang disahkan. OpenLayers mengatasi batasan ini, memberikan kawalan dan fleksibiliti sepenuhnya dalam mana -mana persekitaran.
Bermula dengan OpenLayers:
Fungsi teras adalah mudah: Sertakan perpustakaan JavaScript, buat elemen Div dengan ID yang unik, dan lulus ID ini kepada OpenLayers. Contoh berikut (menggunakan jQuery, walaupun tidak diperlukan) menunjukkan asas -asas:
<code class="language-javascript">jQuery(window).on('load', function() { var map = new OpenLayers.Map('map', { projection: new OpenLayers.Projection('EPSG:900913') }); var osm = new OpenLayers.Layer.OSM(); var gmap = new OpenLayers.Layer.Google('Google street maps'); var bing = new OpenLayers.Layer.Bing({ key: 'register your api key at bingmapsportal.com', type: 'Road', metadataParams: { mapVersion: 'v1' } }); map.addLayers([osm, gmap, bing]); map.setCenter(new OpenLayers.LonLat(2.2, 54.0) .transform(new OpenLayers.Projection('EPSG:4326'), map.getProjectionObject()), 5); map.addControl(new OpenLayers.Control.LayerSwitcher()); });</code>
(EPSG: 900913, mercator sfera) adalah penting untuk keserasian dengan peta Google dan Bing. OpenLayers cemerlang dalam mengendalikan unjuran yang berbeza di seluruh lapisan. projection
OpenLayers menggunakan lapisan vektor untuk menambah data tersuai. Contoh berikut menambah lokasi semasa pengguna:
<code class="language-javascript">var overlay = new OpenLayers.Layer.Vector('Your location'); var map = new OpenLayers.Map('map'); map.addLayers([new OpenLayers.Layer.OSM('OSM'), overlay]); map.setCenter( new OpenLayers.LonLat(2.2, 54.0).transform( new OpenLayers.Projection('EPSG:4326'), map.getProjectionObject() ), 11); navigator.geolocation.getCurrentPosition(function(position) { var yourLocation = new OpenLayers.Geometry.Point(position.coords.longitude, position.coords.latitude) .transform(new OpenLayers.Projection('EPSG:4326'), map.getProjectionObject()); map.getLayersByName('Your location')[0].addFeatures([new OpenLayers.Feature.Vector(yourLocation)]); map.setCenter(new OpenLayers.LonLat(yourLocation.getCentroid().x, yourLocation.getCentroid().y)); });</code>
Menyesuaikan gaya peta:
OpenLayers membolehkan penyesuaian gaya terperinci. Contoh berikut menunjukkan mencipta gaya tersuai:
Data Peta Dinamik:
<code class="language-javascript">// Simple style var styleMap = new OpenLayers.StyleMap({ pointRadius: 20, strokeColor: '#ff0000', fillColor: '#ff0000', fillOpacity: 0.6 }); var overlay = new OpenLayers.Layer.Vector('Your position', {styleMap: styleMap}); // Style using feature attributes var styleMap = new OpenLayers.StyleMap({ pointRadius: '$(pointRadius)', strokeColor: '#ff0000', fillColor: '$(pointColor)', fillOpacity: 0.6 }); // Style using functions and context var context = { getColor: function(feature) { return '#00ff00'; }, getPointRadius: function(feature) { return 15; } } var template = { strokeColor: '${getColor}', pointRadius: '${getPointRadius}', } var styleMap = new OpenLayers.StyleMap(new OpenLayers.Style(template, {context: context}));</code>
OpenLayers menyokong mengambil data secara dinamik dari pelayan backend. Contoh ini menggunakan strategi
untuk meminta data dalam pandangan semasa:<code class="language-javascript">jQuery(window).on('load', function() { var map = new OpenLayers.Map('map', { projection: new OpenLayers.Projection('EPSG:900913') }); var osm = new OpenLayers.Layer.OSM(); var gmap = new OpenLayers.Layer.Google('Google street maps'); var bing = new OpenLayers.Layer.Bing({ key: 'register your api key at bingmapsportal.com', type: 'Road', metadataParams: { mapVersion: 'v1' } }); map.addLayers([osm, gmap, bing]); map.setCenter(new OpenLayers.LonLat(2.2, 54.0) .transform(new OpenLayers.Projection('EPSG:4326'), map.getProjectionObject()), 5); map.addControl(new OpenLayers.Control.LayerSwitcher()); });</code>
untuk dataset besar, strategi kluster (seperti OpenLayers.Strategy.AnimatedCluster
) meningkatkan prestasi dengan mengumpulkan ciri -ciri berdekatan.
Kesimpulan:
OpenLayers menyediakan rangka kerja yang fleksibel dan kuat untuk membuat aplikasi peta tersuai. Sifat sumber terbuka, pilihan penyesuaian yang luas, dan sokongan untuk pelbagai format data menjadikannya alternatif yang kuat untuk penyelesaian pemetaan proprietari. Terokai laman web OpenLayers untuk dokumentasi dan contoh terperinci. Seksyen FAQ yang disediakan selanjutnya menangani soalan dan kebimbangan yang sama.
Atas ialah kandungan terperinci OpenLayers - Alternatif kepada Peta Google. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!