2012-06-28 22 views
5

Bing MapsのEntityClickedListenerに問題があります。私は与えられた例で、次のことをコード化:ClickイベントリスナーをPushpinに追加する

map.setEntityClickedListener(new EntityClickedListener() 
{ 
    @Override 
    public void onAvailableChecked(String layerName, int entityId) 
    { 
     HashMap<String, Object> metadata = map.getLayerManager.GetMetadataByID(layerName, entityId); 
     Toast.makeText(Activity.this, metadata.toString(), Toast.LENGTH_LONG) 
      .show(); 
    } 
}); 

しかし、Pushpinをクリックすると、何もしません。私はトーストメッセージを作成して、メタデータに何が入っているのかを正確に確認しましたが、何も起こりません。私も働いてからListenerを妨げている可能性がいくつかのチェックを削除するにはJavaScriptファイルを編集した

bsds.FindByAreaCompleted = new Handler(){ 
    public void handleMessage(Message msg) { 
    if(msg.obj != null){ 
     Record[] records = (Record[])msg.obj; 
     EntityLayer el = (EntityLayer)bingMapsView.getLayerManager().getLayerByName(Constants.DataLayers.Search); 
     double maxLat = -90, minLat = 90, maxLon = -180, minLon = 180; 

     for(Record r : records){ 
      Pushpin p = new Pushpin(r.Location); 
      p.Title = r.DisplayName; 
      HashMap<String, Object> metadata = new HashMap<String, Object>(); 
      metadata.put("record", r); 
      el.add(p, metadata); 
     } 

    bingMapsView.setMapView(new LocationRect(maxLat, maxLon, minLat, minLon)); 

    el.updateLayer(); 
    } 
}; 

:パスを介してアプリケーションを見ると、私はビングを取得するために、その情報をデータサービスを使用していることを伝えることができ

this.ShowInfobox = function(entity){ 
     window.BingMapsInterlop.entityClicked(entity.layerName, entityId); 
    }; 

var Layer = function(name, map, dataLayer) 
{ 
    this.Name = name; 

    var entities = new MM.EntityCollection(), 
    _map = map; 

    this.AddEntities = function(data) 
    { 
     if(data != null) 
     { 
      var i = data.length - 1; 
      if (i >= 0) 
      { 
       do 
       { 
        data[i].Entity.entityId = data[i].EntityId; 
        data[i].Entity.layerName = name; 

        // Commented out 
        // if(data[i].title != null && data[i].title != undefined && data[i].title != '') 
        // { 
         data[i].Entity.title = data[i].title; 

         MM.Events.addHandler(data[i].Entity, 'click', function(e) 
         { 
          BingMapsAndroid.ShowInfobox(e.target); 
         }); 
        // } 
        entities.push(data[i].Entity); 
       } 
       while (i--) 
      } 
     } 
    }; 
    // fluff 
}; 

JavaScriptファイルを正しく編集しましたか?私はJavaScript自身を知らず、私はthis guideに従っています。 Pushpinが追加されていて、BingMapsViewが表示されていますが、OnClickメソッドは実行されません。私は行方不明のものがありますか?

Bingが作成するために取るパスPushpinのイベントのリスナーとイベントは、私の意見ではほとんどラビリンスです。これを行うための簡単な方法が欠けている必要があります。誰も助言を与えることができますか?

+0

はビューオーバレイの問題かもしれません –

+0

誰かがBing Mapsのための 'EntityClickListener'の作業コードを持っていますか?あなたに私にいくつかのコードを与えることができれば、私は自分自身でそれを理解しようとすることができます。私は過去数週間、このことを忘れてしまった。 –

+0

こんにちは@Yawus、あなたはこのリンクを試しましたか?http://bingmapsandroidsdk.codeplex.com/discussions/263960/ –

答えて

2

私は最終的に答えを見つけました!スクリプトが存在しないメタデータをチェックしないように、JavaScriptファイル内の次のメソッドを編集します。

その後
var Layer = function(name, map, dataLayer) 
{ 
    this.Name = name; 

    var entities = new MM.EntityCollection(), 
    _map = map; 

    this.AddEntities = function(data) 
    { 
     if(data != null) 
     { 
      var i = data.length - 1; 
      if (i >= 0) 
      { 
       do 
       { 
        data[i].Entity.entityId = data[i].EntityId; 
        data[i].Entity.layerName = name; 

        // Commented out 
        // if(data[i].title != null && data[i].title != undefined && data[i].title != '') 
        // { 
         data[i].Entity.title = data[i].title; 

         MM.Events.addHandler(data[i].Entity, 'click', function(e) 
         { 
          BingMapsAndroid.ShowInfobox(e.target); 
         }); 
        // } 
        entities.push(data[i].Entity); 
       } 
       while (i--) 
      } 
     } 
    }; 
    // fluff 
}; 

this.ShowInfobox = function (entity) { 
     window.BingMapsInterlop.entityClicked(entity.layerName, entity.entityId); 
    }; 

にJavaScriptファイル内ShowInfoBox方法を変更このコードは、まっすぐに、あなたのActivity代わりにJavaScriptでそれをいじりの内のコードをクリックしてリスナーにファンネル。前に編集したJavaScriptとの違いは、entityClickedメソッドのパラメータが実際にentity.entityIdでなく、entityIdであることです。

関連する問題