ユーザーデータ層


#ディレクトリ

  • 1 ユーザー データ レイヤー
  • 2 ユーザー データのアップロード
  • 3 ユーザー データ レイヤーの表示
  • 4 ユーザー データの取得
Baidu 地図 API は、ユーザーが LBS クラウドにアップロードした位置データをリアルタイムでレイヤーにレンダリングし、それを地図上にオーバーレイできます。 CustomLayer オブジェクト。現在、LBS クラウドはユーザーによる POI データの保存をサポートしており、保存されるフィールドには経度と緯度の座標に加えて、名前、住所、その他の属性情報も含まれます。 CustomLayer クラスは、LBS クラウド データを読み取るためのインターフェイスを提供し、ユーザー データを自動的にレンダリングしてデータ レイヤーを生成し、オーバーレイ レイヤーをクリックして POI データを返す機能も提供します。一般的なプロセスは次のとおりです。

jsdev9_madian.jpg

ユーザー データのアップロード

ユーザー データをアップロードするには 2 つの方法があります。1 つは HTTP インターフェイスのアップロードです。メソッド、ビジュアル アノテーション メソッド。

1. HTTP インターフェイスのアップロード方法: HTTP インターフェイスの方法では、まずデータ ストレージ スペース (データボックス) を作成し、次にユーザーの POI データをアップロードする必要があります。ストレージ スペースとポイを作成すると、POST リクエストが送信されます。Chrome ブラウザーで Postman プラグインを使用すると、視覚的にリクエストを送信できます。

2. 視覚的な注釈方法: クラウド ストレージ編集ページに入った後、ユーザーは POI データを入力するための注釈モードを設定します。この方法はシンプルで直観的であるという特徴がありますが、データ量が多い場合には非効率的です。

ユーザー データ レイヤーの表示

オーバーレイ ユーザー データ レイヤー

CustomLayer コンストラクターは、データ ストレージ スペース ID (地理的可能性) を受け取ることができます。 id) パラメータはユーザー データ レイヤーを生成し、データ ストレージの作成時にストレージ スペース ID を取得できます。

コードは次のとおりです:

//根据daboxId创建自定义图层,用户可用自己创建的geotableid替换30960  
var customLayer=new BMap.CustomLayer({  
    geotableId: 30960,   
    q: '', //检索关键字  
    tags: '', //空格分隔的多字符串  
    filter: '' //过滤条件,参考http://developer.baidu.com/map/lbs-geosearch.htm#.search.nearby  
});
ユーザー定義レイヤーをマップに追加する方法は、タイルレイヤーを追加する方法と同じです。オブジェクト、つまり:

map.addTileLayer(customLayer);//添加自定义图层

以下は、地図上に北京鉄道切符販売所レイヤーをオーバーレイした表示効果です:

jsdev9_madian_demo.png


ユーザー データのピット表示の例。体験してください。それ 。

ユーザー データ レイヤー イベント

JSAPIv1.5 は、クリック ユーザー データ レイヤー イベントを提供し、クリックされた POI ポイントに関する情報を返すことをサポートします。コードは次のとおりです。

customLayer.addEventListener('onhotspotclick',callback);//单击图层事件  
function callback(e)//单击热点图层  
{  
  var customPoi = e.customPoi,  //获取poi对象  
              str = [];  
          str.push("address = " + customPoi.address);  
          str.push("phoneNumber = " + customPoi.phoneNumber);  
        var content = '<p style="width:280px;margin:0;line-height:20px;">地址:' + customPoi.address + '<br>电话:' + customPoi.phoneNumber + '</p>';  
        var searchInfoWindow = new BMapLib.SearchInfoWindow(map, content, {  //带检索的信息窗口  
            title: customPoi.title, //标题  
            width: 290, //宽度  
            height: 40, //高度  
            panel : "panel", //检索结果面板  
            enableAutoPan : true, //自动平移  
            enableSendToPhone: true, //是否显示发送到手机按钮  
            searchTypes :[  
                BMAPLIB_TAB_SEARCH,   //周边检索  
                BMAPLIB_TAB_TO_HERE,  //到这里去  
                BMAPLIB_TAB_FROM_HERE //从这里出发  
            ]  
        });  
        var point = new BMap.Point(customPoi.point.lng, customPoi.point.lat);  
        searchInfoWindow.open(point);}  
 
}

ユーザー データの取得

ユーザー所有のデータを表示するだけでなく、 JSAPI取得インターフェースにより、独自のデータを取得することもできます。サポートされている検索タイプには、都市内検索、長方形エリア検索、円形エリア検索が含まれます。以下では、円形検索を例として、円形領域内の独自のデータを取得する方法を説明します。まず、マウスを使用して円形領域を描画します:

var drawingManager = new BMapLib.DrawingManager(map, {  
//使用鼠标工具需要引入鼠标工具开源库DrawingManager_min.js及样式文件DrawingManager_min.css  
        isOpen: false, //是否开启绘制模式  
        enableDrawingTool: false, //是否显示工具栏  
        drawingToolOptions: {  
            anchor: BMAP_ANCHOR_TOP_RIGHT, //位置  
            offset: new BMap.Size(5, 5), //偏离值  
            scale: 0.8 //工具栏缩放比例  
        }  
});  
drawingManager.setDrawingMode(BMAP_DRAWING_CIRCLE);  
drawingManager.open();

マウス円描画終了イベント コールバック関数で周囲の検索を実行します:

drawingManager.addEventListener('circlecomplete', function(e) {  
        circle = e;  
        var radius= parseInt(e.getRadius()); //检索半径必须是整型  
        var center= e.getCenter();  
        drawingManager.close();  
        if (customLayer) {  
            map.removeTileLayer(customLayer);  
        }  
        localSearch.searchNearby(' ', center,radius,{customData:{databoxId: 4032}});//用新创建的databoxid替换该值  
});

以下は中関村周辺の鉄道切符売り場を検索した検索結果画像です:

jsdev9_local_demo.png

ユーザーデータ取得の例、ぜひ体験してください。