LayarとLocagoでレイヤーを作成する

こんにちは、ハブロビテス!



Habrで検索しても、 LayarLocagoなどのサービスに関する詳細な記事は見つかりませんでした 。 Layarについて多くの人が聞いたことがある、またはLayarを使ったことさえあれば、Locagoについてはあまりないと思います。 これらのサービスは、地図上に地理的マークを表示するように設計されています。 Layarの場合、これらはGoogleのマップですが、Locagoはベクトルマップを使用します。 地図の入手元はわかりませんが、少なくともタンボフのような小さな都市の地図ではナビゲートできます。多くの主要な通りはあまり表示されておらず、名前はロシア語で表示されています。



これらのサービスのレイヤーを作成する方法について少しお話ししたかったのです。





Layarアプリは現在、iPhoneとAndroidで利用できます。 このアプリケーションでは、拡張現実に重点が置かれています。 一方、Locagoはラベルが付いた単なる地図です。 LocagoはJavaを搭載した通常の携帯電話に焦点を当てているため、ベクターマップが使用されています。 作業中、アプリケーションはサーバーから受け取ったラベルに応じてマップを中央に配置します。 アプリケーションはGPSレシーバーを使用できますが、明らかにBluetooth経由で動作するレシーバーである必要があります。 スマートフォンでは、この機能は機能しませんでした。 Locagoアプリケーションは有料であり、操作中に広告バナーがポップアップ表示されることに注意してください。



どこから始めますか?



そのため、 まずはLayar.comに登録してレイヤーの開発にアクセスする必要があります。そのためには、アドレスhttp://layar.com/publishingにアプリケーションを送信する必要があり、数日後に招待状が送信されます。 残念ながら、どちらも高速ではありません。



招待を受け取ったら、開発者のプロファイルに移動し、[マイレイヤー]-> [レイヤーを作成]をクリックして、レイヤーを設定しますAPIエンドポイントURLフィールドに任意のURLを入力してから、実際のURLに変更できます。 [ カバレッジ ]タブで、レイヤーがカバーする国を選択する必要があります。 また、 フィルターでは、 フィルターを構成する必要があります。 デフォルトでは、現在の場所からラベル表示範囲フィルターが設定されます。 欠点は、Locagoでできるように、フィルターインターフェイスをアプリケーションに動的に転送できないことですが、Layar Webサイトの開発者のプロファイルで構成する必要があります。 一方で、コンテンツの保護がある程度強化されます。これについては、最後に少し説明します。



ロカゴについて。 繰り返しますが、あなたは登録する必要があり、それ以上は必要ありません。 その後、すぐにレイヤーをサイトディレクトリに追加できます。



API Layar



Layar APIは、リクエスト(GetPOIs-Request)-レスポンス(GetPOIs-JSONレスポンス)です。 前述のとおり、APIにはいくつかのバージョンがあります。

2.1 すべての基本的なパラメーターをサポートする古いバージョン
2.2 オーディオとビデオによるアクションの実装を追加しました
3.0 追加された3Dオブジェクト 、カスタム範囲(半径設定)、チェックボックス、検索、ユーザー認証
3.1 有料レイヤーのサポートを追加しました
3.5 3Dオブジェクトにレイヤーストリームとアニメーションテクスチャを追加
4.0 レイヤーと対話する機能が追加されました。 私はそのようなタスクを持っていなかったので、この機能を詳細に理解していませんでした、あなたはここを読むことができます


GetPOIs-Request



クエリパラメータは非常に多くなる可能性があります。 リクエストとともに送信され、アプリケーション自体によって生成される必須パラメーターのリストには、アプリケーション識別子、APIバージョン、現在の場所、国および言語コード識別子が含まれます。 追加のパラメーターには、フィルターデータ、 OAuthを介して生成される承認情報が含まれます。



GetPOIs-JSON応答



スクリプトは、JSON形式で応答を送信する必要があります。 応答には、レイヤーの名前、POIの配列(関心のあるポイント)、エラーコードなどのパラメーターを含める必要があります。 オプションのパラメーターには、複数のページの存在に関する情報(ページに分割できるポイントが多すぎる場合)、レイヤーの更新時間、アクションの存在(マルチメディアコンテンツへのリンク、情報テキスト)が含まれます。 Layarクライアントでは、Android-90、iPhone-100では、データが複数のページに分割されているポイント数の表示に制限があることに注意してください。 このアクションは完全に開発者にあります。



これで、POI情報に関しては、ポイントの名前、ポイントの座標(1,000,000倍)、ポイントまでの距離、およびアイコン番号があります。これらは、[ ルックアンドフィール ]タブのレイヤープロファイルに読み込む必要があります。 APIバージョン2.1をプロファイルにインストールすると、使用できるアイコンは3つだけになるため、バージョン3.0では使用されるアイコンの数が無制限になりました。 アプリケーションが最初にレイヤーをロードすると、すべてのアイコンが携帯電話のメモリにキャッシュされるため、すべてのレイヤーアイコンの交換に関連するトラフィックの増加について心配する必要はありません。 POIの追加パラメーターには、必要に応じて、短いテキスト情報(POIの住所や名前など)と写真へのリンクが保存されます。



単純なレイヤーを作成する例 。 このマニュアルは、PHPの例を使用してわかりやすく記述されているため、原則として質問が発生することはありません。



APIロカゴ



Locagoははるかに簡単です。 フィルターインターフェイスとラベル情報の両方が、サーバー側ですべて生成されます。 ここで、レイヤーにアクセスするときにアプリケーションが最初に取得する必要があるのは、拡張子が.idocのレイヤーのメインページで、xmlベースのIDOCファイルと呼ばれます。



このようなドキュメントの例を次に示します



<? xml version ="1.0" encoding ="UTF-8" ? >

< idoc title ="Bus68" icon ="icon.png" >

<!-- Part: Layer-->

< layer >

< info > </ info >

< symbolLayer name ="Places" dataset ="locago.php.igeo" webServiceFormat ="igeo" >

< categorySymbol value ="0" symbol ="0.png" />

< categorySymbol value ="1" symbol ="1.png" />

< categorySymbol value ="2" symbol ="2.png" />

</ symbolLayer >

< tag name ="bus" />

</ layer >

<!-- Part: Page -->

< style fontSize ="12" fontStyle ="bold" alignX ="middle" > </ style >

< br />

. < br />

< checkbox value ="false" id ="bus0" label =" 1 " />

< checkbox value ="false" id ="bus1" label =" 108" />

< checkbox value ="false" id ="bus2" label =" 14" />

< br />

< style alignX ="middle" >

< button label ="" action ="layer.load({sublayer:'Places', arg:{bus0:doc.fields.bus0.value, bus1:doc.fields.bus1.value, bus2:doc.fields.bus2.value }})" />

</ style >

</ idoc >




* This source code was highlighted with Source Code Highlighter .








どのタグが何に責任があるのか​​すぐに理解できると思います。 symbolLayerタグのデータセット属性には、ラベルに関する情報をアプリケーションに提供するページが含まれています。 そして、 ボタンタグのアクション属性で、このボタンサブレイヤーでロードするレイヤーを示します: 'Places' 、ページ上に複数のレイヤーがある場合、異なるボタンに異なるレイヤーを割り当て、リクエスト時に渡すパラメーターを引数で指定できますチェックボックス値を送信します 。 その結果、この種のページを取得します







アプリケーションには、ラベルをリストするXMLを提供する必要があります。 XMLファイルの末尾には.igeo拡張子が必要であり、IGEOという名前が付けられます 。 IGEOファイルの例を次に示します。



<? xml version ="1.0" encoding ="UTF-8" ? >

< geodata >

< Marker name ="Restaurant Slussen" symbol ="i:pinorange" x ="18.071862" y ="59.322227" text ="A nice cosy restaurant.\ntel:+46555123" />

< Marker name ="Bar Gamla stan" symbol ="i:pinorange" x ="18.070829" y ="59.325035" text ="redirect:1187768.idoc" />

</ geodata >




* This source code was highlighted with Source Code Highlighter .








ご覧のとおり、2つのラベルがあり、各ラベルには属性名がありシンボルはアイコンへのリンクです。または、例に示すように、特定の色のラベルには、説明テキストを書き込むポイントとテキストの xy座標があります。 2番目のラベルのテキスト属性に注意してください。ここにidocファイルへのリンクがあります。つまり、ラベルの詳細な説明が記載されたページにユーザーを送ることができます。 シンボル属性は、ラベルが属する特定のカテゴリを指すカテゴリ属性に置き換えることができます。 ご覧のように、 カテゴリcategorySymbolタグのidocメインページで宣言する必要があります。最初の例では、そのようなタグが存在し、ラベルがカテゴリに割り当てられたときに表示されるアイコンが宣言されます。



コンテンツ保護について一言



Locagoを使用する場合、すべてのページはサーバーに保存され、任意のブラウザーで開くことができるため、要求を生成できるため、コンテンツを保護するのは非常に難しいことに注意してください。 したがって、データを解析することは難しくありません。 Layarでは、これはアプリケーション自体からの要求を確認できないため(これはやや複雑です。もちろん、問題は議論の余地があり、知識のある人が必要なものを取得するのは難しくありません)、したがってデータの取得はより問題になります。 ラベルデータベースを手動で作成した人にとって、保護の問題が発生する可能性が高くなります。



この記事が誰かに役立つことを願っています。



All Articles