Saya ingin overlay beberapa data yang proyeksi WGS-84 di layer peta Google di OpenLayers. Tapi saya tidak bisa membuatnya di tempat yang tepat. Saya melakukan sebagai berikut:
map = new OpenLayers.Map('map', {
numZoomLevels: 20,
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG: 4326")
});
googlelayer = new OpenLayers.Layer.Google("Google street", {sphericalMercator: true});
map.addLayer(googlelayer);
veclayer = new OpenLayers.Layer.Vector("vector", {
projection: map.displayProjection
};
var geojson_format = new OpenLayers.Format.GeoJSON();
veclayer.addFeatures(geojson_format.read(jsonData));
Meskipun saya telah menetapkan veclayer
proyeksi 4326, tetapi masih ditafsirkan sebagai 900.913, dan sistem koordinasi tampilan juga 900.913, meskipun saya mengatur tampilan Proyeksi ke 4326. Kesalahan apa yang saya buat?
preFeatureInsert
, bagaimanapun, saya tidak dapat menemukannya di API resmi API ~Anda memiliki ruang setelah titik dua.
Projection("EPSG: 4326")
seharusnya benar-benarProjection("EPSG:4326")
, tidak ada ruang sebelumnya4326
.sumber
Saya memposting cuplikan kode lama saya. Saya ingat bahwa mendung ada di proyeksi. addTransform harus menyelesaikan masalah Anda. (proj4)
sumber
Anda mungkin jatuh di sana karena Anda mencari representasi vektor yang sedikit diimbangi di Google Maps sementara itu baik-baik saja pada lapisan dasar lainnya dan mengubah EPSG: 4326 menjadi EPSG: 900913 atau EPSG: 3857 tidak menyelesaikan semuanya.
Ada bug di Google Maps yang tidak mengevaluasi dengan baik ukuran div ketika memulai objek OpenLayers Map jika belum terlihat. Jadi setelah mengubah () & redraw () panggilan, Anda mungkin perlu lakukan
myMapObject.updateSize();
untuk memberi tahu Google proporsi peta Anda yang sebenarnya di layar.Jika Anda mencari solusi umum untuk mengubah layer dari satu proyeksi ke proyeksi lain, Anda bisa menggunakan fungsi ini:
Dan lagi!
sumber
Untuk Yahoo Anda dapat mencoba opsi ini:
sumber