- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
使用以下代码将各种线添加到表示路线的 map 中:
private LineLayer makeLineLayer(List<GeoPoint> routePoints, String title) {
String sourceTitle = "line-layer-" + lineCount;
List<Position> points = new ArrayList<>(routePoints.size());
List<Feature> routes = new ArrayList<>(routePoints.size());
for (GeoPoint point : routePoints) {
points.add(Position.fromCoordinates(point.getLongitude(), point.getLatitude()));
}
LineString route = LineString.fromCoordinates(points);
Feature routeFeature = Feature.fromGeometry(route);
routeFeature.addStringProperty("custom-line", "0");
routes.add(routeFeature);
GeoJsonSource linesSource = new GeoJsonSource(
sourceTitle,
FeatureCollection.fromFeatures(routes));
mapboxMap.addSource(linesSource);
LineLayer lineLayer = new LineLayer(title, sourceTitle);
lineLayer.setProperties(
//Sets properties...
);
return lineLayer;
}
LineLayer lineLayer = makeLineLayer(getRoutePoints());
mapboxMap.addLayer(lineLayer);
我希望能够确定何时单击其中一行。目前,MapBox 调用OnMapClick
并传入一个LatLng
对象。然后,我可以使用以下方法使用 custom-line
属性查询呈现的功能:
PointF pixel = mapboxMap.getProjection().toScreenLocation(point);
List<Feature> selectedKeys = mapboxMap.queryRenderedFeatures(pixel, Filter.has("custom-line"));
如果 selectedKeys
然后包含任何返回的 Feature
对象,我可以使用 .getGeometry()
查询它们的坐标。将这些值与传入的 LatLng
对象的值进行比较,可以粗略估计点击了哪一行。但是,当行项目紧密分组时,这是非常不准确和麻烦的。
如何监听这些订单项的点击事件?
最佳答案
根据 MapBox 的 Android SDK 文档。
在父类(即 Layer
)中都没有点击 LineLayer
的方法。
如果您可以将 LineLayer
转换为 Polyline
,您就可以在 Android 中使用内置的点击方法。
引用这个link弄清楚它。
这是它的方法细节。onPolylineClick
void onPolylineClick(@NonNull Polyline 折线)
**
Called when the user clicks on a polyline.
**
参数:
polyline
- 用户点击的折线。
关于android - 监听 LineLayer 上的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47105116/
使用以下代码将各种线添加到表示路线的 map 中: private LineLayer makeLineLayer(List routePoints, String title) { Stri
我正在使用 Android Mapbox SDK 将 VectorSource 添加到 MapboxMap,然后我还尝试将 LineLayer 添加到 map 。 目前使用的是5.1.3版本 此代码将
我的编译器提示这一行: LineLayer& lastLayer = *this->layers.back(); error: invalid initialization of reference
我是一名优秀的程序员,十分优秀!