GMSIndoorDisplay:如何强制更改到特定楼层

时间:2014-12-18 18:16:48

标签: ios google-maps google-maps-sdk-ios

我正在使用谷歌地图的GMSIndoorDisplay类。我可以使用默认楼层设置视图。用户可以通过按下楼层列表中的任何楼层来更改楼层。有没有办法在现有的加载ViewController上以编程方式强制更改楼层?

3 个答案:

答案 0 :(得分:1)

我找到了办法。通过保存当前构建对象,我们可以更改GMSIndoorDisplay的活动级别,然后强制调用委托:

- (void) didChangeActiveBuilding:       (GMSIndoorBuilding *)   building    [optional]

这样,将自动触发以下代理:      - (void)didChangeActiveBuilding :( GMSIndoorBuilding *)建筑[可选]

- (void) didChangeActiveLevel:      (GMSIndoorLevel *)  level   [optional]

答案 1 :(得分:0)

不幸的是,看起来你不能这样做。每个建筑物都有一个默认楼层,将在首次显示选择器时选择。

答案 2 :(得分:0)

好吧,您需要拥有建筑物中的所有级别和当前选定的楼层。

- (void)mapViewDidFinishTileRendering:(GMSMapView *)mapView {
    if(!selectlevel)
        selectlevel = mapView.indoorDisplay.activeBuilding.defaultLevelIndex;
    allLevels = mapView.indoorDisplay.activeBuilding.levels;
}

- (void)down:(id)down {
    if(selectlevel>0){
        selectlevel = selectlevel -1;
        mapView.indoorDisplay.activeLevel = allLevels[selectlevel];
    }
}

- (void)up:(id)up {
    if(selectlevel< [allLevels count] -1){
        selectlevel = selectlevel +1;
        mapView.indoorDisplay.activeLevel = allLevels[selectlevel];
    }
}