メンテナンスをほとんど/まったく必要としないWebマップを構築するための優れたJavascript Web API(できればオープン)は何ですか?


11

私は最近、地元の非営利団体のためにウェブマップを作成することを志願しました。マップは非常に基本的なものになります。オレゴン州のレーン郡を複数の地区に分割して表示する必要があり、各地区には「セントラルオフィス」の場所があります。夏の間は暇なときにこれを構築する予定であり、将来のメンテナンスが必要になるリスクをほとんど負わずにこれを渡すことができるようにしたいと考えています。

ArcGIS ServerでArcGIS Javascript APIを使用して多くのWebマップを作成しましたが、この組織にはESRIソフトウェア(またはそのためのGIS)がないため、別のAPIの学習を計画しています。OpenLayers / OpenGeoを検討しています。念頭に置いておくべきことの1つは、この組織にはこのマップのレイヤーをホストするサーバーが設定されていない、または設定されていないため、データを保存およびアクセスする方法がわからないことです。多分JSON?

現在、ArcGIS以外のほとんどのソリューションに不慣れなので、アドバイスをいただければ幸いです。

回答:


4

このOpenLayersの例http://openlayers.org/dev/examples/vector-features.htmlのように、機能をJavascriptにハードコーディングするだけで済みます。さらにデータを保存する必要はありません。もちろん、これは表示する機能がほとんどない場合のオプションにすぎません。しかし、これは将来のメンテナーが理解できる「1つのファイル」ソリューションです。

ポリゴンをシェープファイルにエクスポートできる場合、QGISは「ノードの抽出」に役立ちます。これを使用して、次のようにOpenLayersでポリゴンを作成できます。

// 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]));

これらのポリゴンをGoogleマップなどにオーバーレイする場合、最初にポリゴンをWebメルカトル図法に再投影することをお勧めします。


ありがとう!これは、あまり多くの機能を持っていない限り、必要なものになりそうです。やってみます。現在の地区ポリゴンフィーチャクラスをこれらのハードコーディングされた値にエクスポートする方法を理解する必要があります。
タナー

1
@Tanner:GDAL / OGRを使用してGeoJSONに変換できます。少なくとも、クラウドメイド、Googleマップ、Yahoo!OpenLayersのマップまたはBing Mapsベースレイヤー。私は商用サービスを推進しているように聞こえるのは嫌ですが、あなたはOpen techのためにOpen techを使用しているように聞こえます。組織にまともなマップを提供します。
ショーン

@Tanner:地区データはどのフォーマットにありますか?
暗闇

ArcGISポリゴンフィーチャクラス。
タナー

@Sean:アドバイスをありがとう。GDAL / OGRを確認します。これはボランティアプロジェクトであるため、これは(できれば)1回限りの取引です。私はそれに戻る必要はありません。主な関心事は、サーバーソフトウェア(MapServerなど)を必要とせず、すぐに壊れる可能性が最も低いシンプルなWebマップをWebサイトでホストできるようにすることです。商用ベースレイヤー/ APIがこれを提供できる場合、それを検討します。少なくとも、商用ベースレイヤーを使用する可能性があります。
タナー

10

オープンソースのマッピングソリューションについては、以下を検討できます。

  1. マッピングサーバープラットフォーム-GeoServer Javaベースのオープンソース。多くの本番環境で適切に動作します:チェック:http : //geoserver.org/display/GEOS/Welcome ユーザーマニュアル:http : //docs.geoserver.org/stable/en/user/

    他のオプションはMapServerです:http : //mapserver.org/

    比較を確認してください:http : //www.slideshare.net/novum.limitis/mapserver-vs-geoserver

  2. クライアント側-Webページのスクリプト。多くの例として開始し、実装も容易なOpenlayerが最も望ましい方法です。チェック:http : //openlayers.org/ 例:http : //openlayers.org/dev/examples/

  3. 空間データ:利用規約とライセンスに基づいて、Google / Yahoo / Bingマップを使用できます。または、GeoServerで公開して使用できるOpenStreet Maps。OpenStreet Map:http: //www.openstreetmap.org/ OpenStreet Mapのシェイプファイルは、http: //wiki.openstreetmap.org/wiki/Shapefilesからダウンロードできます

Google / Yahoo / Bingマップを使用する場合は、APIまたはOpenLayersを使用してマップを使用し、GeoServerとSpatial Dataは不要です。質問は優れたWebマップAPIを要求しましたが、完全にオープンソースのマッピングプラットフォームについて考えるために、マッピングプラットフォームと空間データ参照が上記で追加されています。


ちょっと言ったけど、もっといい!
MerseyViking

3

私はUGの論文の一部としてOpenLayersを使用していますが、それは誤りではありません。まあ私はできます、そして私はそれを振る舞うために昨夜遅くまで起きていましたが、それはOL自体ではなくモバイルフレンドリーなサイトを組み立てようとしたとき、それは私の側ではほとんど無知でした。

WMSを使用すると、別のサーバーからのレイヤーを簡単に追加できます。MapServerを実行してWMSタイルを無効にし、OLから次のものを使用します。

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);

実際、WFS、さらにはWFS-Tサーバー、OSM、Google、またはBingのマップおよび写真レイヤーにも対応でき、小さなフットプリントで見栄えの良いWebマッピングアプリを作成できます。


3

使用OpenLayersをし、YES、あなたがにデータを格納することができ、あなたのマップレイヤホストするGeoServerをインストールすることができない場合にGeoJSONまたはローカルKMLのあなたがしたい場合は、ファイルを。



2

パーティーに遅刻しましたが、私は最近意味のある別のオプションを追加すると思いました。

サーバーをホストしたくないが、スタイリングと非常に高速なタイルキャッシングの恩恵を受けたい場合は、Google Fusion TablesOpenlayersをお試しください。アラングレンさんのブログ

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);

gdalを使用してフュージョンテーブルをロードできます。この方法では、クライアント側でジオソンジオメトリを解析する代価を支払う必要はありません。このコストは、些細なもの(少量の機能の場合)からかなりの量(大量の機能の場合)に及ぶ場合があります。また、ジオメトリを大きくします


1

@Seanの答えに沿って、昨年10月に私が提起し質問とその解決策を以下に示します。私も渡されるものが欲しかった。地区の境界を表示する限り、Fusion Tablesでそれを行うことができますか?


1

CloudMadeGoogleマップYahoo!マップまたはBingマップ。最終的に、誰かが彼らのウェブサイトで彼らを助けるためにやって来て、OpenLayersまたはGeoJSONについての手がかりを失います。有名な商用製品を使用する方がはるかに将来性があります。Googleマップで何をすべきかを知っている人を見つけやすくなり、使い慣れたインターフェイスを使用できるようになります。また、公開サイトの場合はまだ無料です。

必ず独自のAPIキーを取得してください。


3
この質問は、商用版を提案する権利があるため、「オープンソース」とタグ付けされ、ダウン投票ではありません。ただ、Googleマップでは、GoogleマップAPIの新しいバージョンごとに同じAPPを何度も何度も開発し続けることを余儀なくされた後、コードをアップグレードする必要があります。openlayersを使用して開発したら、好きなだけライブラリを自己ホストできます。サービスをオフにするスイッチをひっくり返すことを心配する必要はありません。
CaptDragon

1
オープンソースに対しては何もありません。まったく逆です。私は「オープン」を寛大に解釈したかもしれません(タグを制限的なものとは見なしません)。ただし、彼が取り組んでいる問題領域については、OpenLayers、MapServer、GeoServer、OpenStreetMapなどに対する提案は、非営利のスタッフの99.9%が自分で処理できるよりも技術的にはるかに複雑です。組織を支援したい場合、彼は彼らに修正できるものを提供するか、彼がいなくなったときに修正する人を簡単に見つける必要があります。スキルセットにGoogleマップを持っている人の数は非常に多く、組織サーバーへのアクセスは必要ありません。
ショーン

1
質問者がマップサービスをホストできないと明確に言ったときに、なぜGeoServerとMapServerを提案している答えを人々が投票するのか、私にはわかりません。:P
CaptDragon

@capdragon:回答でも、GeoServer / MapServerと空間データはオプションであることを明確に述べています。それらなしでOpenlayersを先に進めることができます..それらに気付くために、ユーザーへの回答に余分な関連情報を与えることは害ありません...-
Senthil

@Senthil:もう一度読んで、「この組織には、このマップのレイヤーをホストするサーバーが設定されていない/いない」と引用します。Optionalは質問の中の単語ではありません。
CaptDragon

1

おそらくCartoDBをチェックする価値があります。

http://cartodb.com/

洗練された無料のWebマッピングサービスで、地理データを簡単に読み込んで編集できます。マップを「プライベート」にするオプションがあるかどうかはわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.