MapBox Symbol不能像标记一样正常工作(聚类,单击..)

时间:2019-03-09 15:39:24

标签: mapbox mapbox-android

我正在尝试使用新的有前景的GL Symbol图层/源在MapBox上移动汽车。在android和ios上看起来都很好,但是我面临着两个不可能。

  1. 符号始终在聚类。 setIconAllowOverlap()和setIconIgnorePlacement()无效:在某些缩放比例下,它将被聚类。在两个平台上。

如何完全禁用符号聚类


更新:代码甚至快速的解决方案! (可能是错误?请参见withTextField上的评论)

in onStyleLoaded():
...
carManager = new SymbolManager(mapView, mapboxMap, style);
carManager.setIconAllowOverlap(true);//doesn't help
carManager.setIconIgnorePlacement(true);//doesn't help
...

in drawCarFunction():
...
            SymbolOptions carOptions = new SymbolOptions()
                    .withLatLng(latLng)
                    .withIconImage(carPlate)
                    //.withTextField(carPlate) //!!!! here it will cluster if text exists, and will NOT - without any text
                    ;
            Symbol car= carManager.create(carOptions);
            carSymbols.add(car);
...

下一个问题:

  1. 在Android上,我们有symbolManager.addClickListener(),但是我如何在iOS上点击?我知道我可以抓住水龙头,计算最近的标记等,但是

如何快速使符号单击更简单?

  1. 动车任务中,我应该枚举现有的汽车,移动跑步,添加最新的汽车。我应该在哪里存储汽车ID,以便以后进行下一步操作?甚至没有symbol.setTag()选项的地方...在片段中存储ID(如在GMaps上)并不是我期望的MapBox选择。当然,我可以制作成对的数组“汽车ID =符号ID”,但是

如何在符号中存储我自己的UID?

更新:代码。注意getTag()附近的评论

void moveExistingCarOrAddNew(int carId, LatLng newLocation){ 
  for (int i = 0; i < carManager.getAnnotations().size(); i++) { 
    if (carManager.getAnnotations().get(i).getTag()==carId){ //but no getTag() here, I should fit data into text fields
       car.setLatLng(newLocation); //move! 
    } else { 
       ...//create new marker as shown above } 
    }
  }
}

0 个答案:

没有答案