0

我正在使用室内定位框架 wifislam 并且有一个编程问题。到目前为止,我已经通过WifiSLAM 的interiorLocationView 给出了一个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

原因是谷歌地图视图顶部有一个透明视图,它显示了平面图。尝试在 IndoorLocationView#getView 返回的视图上添加一个侦听器,但这可能会搞砸捏缩放/平移控件;您应该仔细检查效果(除非您的标记之一已被点击,否则您可能希望从侦听器返回 false)。

如果这不起作用,您最好联系 WiFiSLAM 支持并提供您的用例,以便他们更新他们的 SDK 以满足您的需求。SDK 网站帮助部分的常见问题解答主题中似乎有一个支持电子邮件地址。

于 2012-12-27T22:52:16.663 回答