Çok az bakım gerektiren / hiç bakım gerektirmeyen web haritaları oluşturmak için iyi bir Javascript web API'sı (tercihen açık) nedir?


11

Kısa bir süre önce yerel bir kâr amacı gütmeyen kuruluş için bir web haritası yapmak için gönüllü oldum. Harita oldukça basit olacak. Oregon'un Lane ilçesini, her bölge için bir "merkez ofis" konumu ile birden fazla bölgeye bölünmüş olarak göstermesi gerekiyor. Bunu yaz boyunca boş zamanlarımda inşa etmeyi planlıyorum ve bunu gelecekte herhangi bir bakım gerektirme riski çok az olanlara teslim etmek istiyorum.

ArcGIS Server ile ArcGIS Javascript API'sini kullanarak bir dizi web haritası oluşturdum, ancak bu kuruluşun herhangi bir ESRI yazılımı (veya bu konuda herhangi bir CBS) bulunmadığından farklı bir API öğrenmeyi planlıyorum. Ben OpenLayers / OpenGeo düşünüyor. Akılda tutulması gereken bir şey, bu kuruluşun bu haritanın katmanlarını barındıracak bir sunucuya sahip olmadığı / olmayacağıdır. JSON belki?

Şu anda ArcGIS dışı çözümlerin çoğunu bilmiyorum, bu nedenle herhangi bir tavsiye takdir edilecektir.

Yanıtlar:


4

Bu OpenLayers örneğinde olduğu gibi özelliklerinizi Javascript olarak kodlayabilirsiniz: http://openlayers.org/dev/examples/vector-features.html . Daha fazla veri depolama konusunda endişelenmenize gerek yok. Tabii ki bu sadece görüntülenecek çok az özelliğiniz varsa bir seçenektir. Ancak bu, gelecekteki herhangi bir bakımcının anlayabilmesi gereken bir "tek dosya" çözümüdür.

Çokgenlerinizi şekil dosyasına aktarabiliyorsanız, QGIS, daha sonra aşağıdaki gibi OpenLayers'da Çokgenler oluşturmak için kullanabileceğiniz "düğümleri çıkarmanıza" yardımcı olabilir:

// create a polygon feature from a linear ring of points
var pointList = [new OpenLayers.Geometry.Point(x1,y1),new OpenLayers.Geometry.Point(x2,y2),<<<more points>>>];
var linearRing = new OpenLayers.Geometry.LinearRing(pointList);
var polygonFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linearRing]));

Bu çokgenleri Google Haritalar'ın veya benzerlerinin üstüne yerleştirmek istiyorsanız, önce çokgenleri Web Mercator projeksiyonuna yeniden yansıtmak isteyebilirsiniz.


Teşekkürler! Bu, çok fazla özelliğim olmadığı sürece ihtiyacım olan şey gibi görünüyor. Ben bunu deneyeceğim. Sadece şu anki Bölge poligon özellik sınıfımı bu sabit kodlanmış değerlere nasıl aktaracağımı anlamaya ihtiyacım var.
Tanner

1
@Tanner: GeoJSON'a dönüştürmek için GDAL / OGR kullanabilirsiniz. En azından onlara Cloudmade, Google Maps, Yahoo! OpenLayers'ta Haritalar veya Bing Haritalar temel katmanı. Ticari teklifleri zorluyormuş gibi ses çıkarmaktan nefret ediyorum ama Open tech uğruna Open tech kullandığınız anlaşılıyor. Kuruluşa iyi görünümlü bir harita verin.
Sean

@Tanner: Bölge verileriniz hangi formatta?
underdark

ArcGIS çokgen özellik sınıfı.
Tanner

@Sean: Tavsiye için teşekkürler. GDAL / OGR'yi kontrol edeceğim. Bu gönüllü bir proje olduğundan, bu (umarım) bir defalık bir anlaşmadır. Ona geri dönmek zorunda kalmak istemiyorum. Ana endişe, herhangi bir sunucu yazılımı (MapServer gibi) gerektirmeyen ve en kısa zamanda herhangi bir zamanda kırılması muhtemel olan web sitelerinde barındırılabilecek basit bir web haritası yapmaktır. Ticari bir temel katman / API bunu sağlayabilirse, bunu dikkate alacağım. En azından ticari bir temel katman kullanacağım.
Tanner

10

Açık kaynak eşleme çözümü için aşağıdakileri düşünebilirsiniz:

  1. Eşleme Sunucusu Platformu - GeoServer Java tabanlı ve açık kaynak. Birçok üretim ortamında iyi çalışır: Kontrol edin: http://geoserver.org/display/GEOS/Welcome Kullanım kılavuzları: http://docs.geoserver.org/stable/en/user/

    Diğer seçenek MapServer olabilir: http://mapserver.org/

    Karşılaştırmayı kontrol edin: http://www.slideshare.net/novum.limitis/mapserver-vs-geoserver

  2. İstemci tarafı - web sayfası komut dosyası oluşturma. Openlayers en çok tercih edilen örnek olarak başlar ve uygulaması da kolaydır. Kontrol edin: http://openlayers.org/ Örnekler: http://openlayers.org/dev/examples/

  3. Uzamsal Veriler: Şartlar ve koşullar ve lisanslarına göre Google / Yahoo / Bing haritalarıyla gidebilirsiniz. Veya GeoServer'da yayınlayabileceğiniz ve kullanabileceğiniz OpenStreet Maps. OpenStreet Map: http://www.openstreetmap.org/ OpenStreet Map şekil dosyaları şu adresten indirilebilir: http://wiki.openstreetmap.org/wiki/Shapefiles

Google / Yahoo / Bing haritalarını kullanacaksanız, API veya OpenLayers ile birlikte kullanabilirsiniz ve GeoServer ve Spatial Data gerekmez. Her ne kadar iyi bir web haritası API'sı istenmiş olsa da, tamamen açık kaynak haritalama platformu hakkında düşünmek için yukarıda ek olarak Haritalama platformu ve Mekansal veri referansı verilmiştir.


Dediğim gibi, ama daha iyi koy!
MerseyViking

3

OpenLayers'ı UG tezimin bir parçası olarak kullanıyorum ve hata yapamıyorum. Peki yapabilirim ve dün gece geç saatlere kadar davranmaya çalışıyordum, ama bu OL per se yerine bir mobil dostu site bir araya getirmeye çalışırken çoğunlukla cahil oldu.

WMS kullanarak başka bir sunucudan gelen katmanları eklemek kolaydır; WMS fayans doles çalışan MapServer var ve OL sadece kullanıyorum:

var layer = new OpenLayers.Layer.WMS(
    "Resistivity",
    "http://mywebsite.com/maps?map=amap.map",
    {'layers': 'resistivity', 'format':'image/png', 'transparent':'true'},
    {singleTile: true}
);

map.addLayer(layer);

Gerçekten de, WFS ve hatta WFS-T sunucuları ve OSM, Google veya Bing harita ve fotoğraf katmanları ile başa çıkabilir, küçük bir alana sahip iyi görünümlü bir web haritalama uygulamasına sahip olabilirsiniz.




2

Partiye çok geç kaldım, ama bugünlerde mantıklı olacak başka bir seçenek ekleyeceğimi düşündüm.

Bir sunucuyu barındırmak istemiyor, ancak yine de stil ve çok hızlı döşeme önbelleklemesinden yararlanmak istiyorsanız, neden Google Fusion Tables ve Openlayers olmasın ? Gönderen Allan Glenn'de blogunda

var proj_4326 = new OpenLayers.Projection('EPSG:4326');
var proj_900913 = new OpenLayers.Projection('EPSG:900913');
map = new OpenLayers.Map({
   div: "map",
   projection: proj_900913,
   'displayProjection': proj_4326,
   allOverlays: true
});

var osm = new OpenLayers.Layer.OSM();

var fusionLayer = new OpenLayers.Layer.OSM("Fusion Table       
Map","http://mt0.googleapis.com/mapslt?hl=en- 
US&lyrs=ft:113681&x=${x}&y=${y}&z=${z}&w=256&h=256&source=maps_api");
map.addLayers([osm,fusionLayer]);

var long=12;
var lat=56.5;

var lonlat = new OpenLayers.LonLat(long,lat).transform(map.displayProjection,
map.projection);

map.setCenter(lonlat, 6);

Sen edebilirsiniz füzyon tablolarını yüklemek için bir GDAL kullanın . Bu şekilde, müşteri tarafında geojson geometrilerini ayrıştırma ücretini ödemezsiniz. Bu maliyet önemsiz (az miktarda özellik için) ile önemli (çok sayıda özellik için) arasında değişebilir. Ayrıca geometrilerinizi çok fazla


1

@ Sean'ın cevabı boyunca, burada geçen Ekim'de sorduğum bir soru ve çözüm. Ben de aktarılabilecek bir şey istedim. İlçe sınırlarınızı görüntülediğiniz sürece, Fusion Tables bunu yapabilir mi?


1

CloudMade , Google Haritalar , Yahoo! Haritalar veya Bing Haritalar . Sonunda, birisi web sitelerinde onlara yardım etmek için gelecek ve OpenLayers veya GeoJSON hakkında bir ipucu olmayacak. Tanınmış bir ticari ürün kullanmak geleceğe daha uygun olacaktır. Google Haritalar ile ne yapacağını bilen birini bulmaları daha kolay olacak ve tanıdık bir arayüze sahip olacak. Ve halka açık siteler için hala ücretsiz.

Onlara kendi API anahtarlarını aldığınızdan emin olun.


3
Bu soru "açık kaynak" etiketli, aşağı oylama değil, çünkü ticari bir versiyon önerme hakkına sahipsiniz. Google Haritalar ile, Google Haritalar API'sının her yeni sürümü için aynı APP'yi tekrar tekrar geliştirmeye devam etmeye zorlandıktan 3 yıl sonra kodunuzu yükseltmeniz gerekir. Openlayers ile geliştirdiğinizde kütüphaneyi istediğiniz kadar barındırabilirsiniz. Kimse hizmetinizi kapatacak bir anahtar çevirme konusunda endişelenmenize gerek yok.
CaptDragon

1
Açık kaynağa karşı hiçbir şeyim yok. Tam tersi. 'Açık'ı' liberal olarak yorumlamış olabilirim (ve etiketleri kısıtlayıcı olarak almıyorum). Bununla birlikte, ele aldığı sorun alanı için, OpenLayers, MapServer, GeoServer, OpenStreetMap vb. Kuruluşa yardım etmek istiyorsa, onlara tamir edebilecekleri bir şey vermeli ya da giderken kolayca tamir edecek birini bulmalıdır. Beceri setlerinde Google Haritalar'ı olan kişilerin sayısı önemli ölçüde daha yüksektir ve herhangi bir kuruluş sunucusuna erişim gerektirmez.
Sean

1
Evet neden insanlar özellikle herhangi bir harita hizmetlerini barındıramayacağını söylediğinde GeoServer & MapServer'ı öneren cevapları neden oy kullandıklarına dair hiçbir fikrim yok. : P
CaptDragon

@capdragon: Yanıtlarda da GeoServer / MapServer ve uzamsal verilerin isteğe bağlı olduğu açıkça belirtilmiştir. Onları olmadan Openlayers ile devam edebilir .. Bunları fark etmek için kullanıcıya cevap içinde ekstra ilgili bilgi vermek için hiçbir zarar ...
Senthil

@Senthil: tekrar okudum ve şu alıntıyı yapıyorum: "bu kuruluşun, bu haritanın katmanlarını barındırmak için kurulmuş bir sunucusu yok / olmayacak". İsteğe bağlı soru bile bir kelime değildir.
CaptDragon

1

Muhtemelen CartoDB'yi kontrol etmeye değer:

http://cartodb.com/

it'a kaygan, coğrafi verileri kolayca yüklemenizi ve düzenlemenizi sağlayan ücretsiz web haritalama hizmeti. Bir haritayı 'özel' yapma seçeneği olup olmadığından emin değilim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.