0

屋内測位フレームワーク wifislam を使用していますが、プログラミングに関する質問があります。これまで、WifiSLAM の IndoorLocationView で MapView を指定しました。私は次のコードで作業しています。

    final IndoorLocationManager.Configuration config = new IndoorLocationManager.Configuration();
    indoorLocationManager = new IndoorLocationManager(this, config,
            onServiceConnected, LOCATION_CHOICE);
    indoorLocationView = indoorLocationManager.createLocationView(this,
            GOOGLE_MAPS_API_KEY);

    final View mapContainer = findViewById(R.id.mapcontainer);
    ((ViewGroup) mapContainer).addView(indoorLocationView.getView());
    MapView mapView = indoorLocationView.getGoogleMapView();
    List<Overlay> mapOverlays = mapView.getOverlays();
    Drawable drawable = this.getResources().getDrawable(R.drawable.pinred);
    itemizedOverlay = new AddItemizedOverlay(drawable, mapView.getContext(), sm);
    mapOverlays.add(itemizedOverlay);

AddItemizedOverlay には次のメソッドがあります。

@Override
public boolean onTap(GeoPoint geopoint, MapView mapView) {
    mapOverlays.clear();
    // geopoint = mapView.getProjection().fromPixels((int) event.getX(),
    // (int) event.getY());
    // latitude
    if (geopoint != null) {
        this.geopoint = geopoint;
        lat = geopoint.getLatitudeE6();
        // longitude
        lon = geopoint.getLongitudeE6();
        OverlayItem overlayitem = new OverlayItem(geopoint,
                "Task Position", "Derzeitige Position vom Task");
        this.addOverlay(overlayitem);
    }
    return false;
}

私の問題は、デバイスに触れても onTap メソッドが応答または反応しないことです。同様に、onTouch イベントには反応がありません。wifislam の上にあるこれらのレイヤーが、MapView にアクセスできないようにしていると思います。マップにマーカーを追加できるように、MapView に到達する可能性はありますか?

4

1 に答える 1

0

これは、フロアプランを表示している Google マップ ビューの上に透明なビューがあるためです。IndoorLocationView#getView によって返されたビューにリスナーを追加してみてください。ただし、ピンチ ズーム/パン コントロールが台無しになる可能性があります。効果を再確認する必要があります (マーカーの 1 つがタップされていない限り、おそらくリスナーから false を返す必要があります)。

それでもうまくいかない場合は、WiFiSLAM サポートにユースケースを連絡して、ニーズに合わせて SDK を更新できるようにすることをお勧めします。SDK Web サイトのヘルプ セクションの FAQ トピックにサポート メール アドレスがあるようです。

于 2012-12-27T22:52:16.663 に答える