gpt4 book ai didi

java - Esri-Maps 中的聚类点

转载 作者:行者123 更新时间:2023-11-29 22:43:59 26 4
gpt4 key购买 nike

我正在使用 EsriAndroid SDK 制作的 ArcGIS map link to ArcGIS在 map 上显示一些点。到目前为止,我已经通过 removeDupes 删除了具有相同坐标的点,并且只绘制了不重复的坐标。然后点之间是连接它们的线。

OnClick 可以看到1个点的信息。

现在我不需要删除重复项,而是需要在群集中显示相同的点。基本上是一个更大的圆圈,它会显示有多少点在同一坐标上,然后当单击该群集时,它会显示实际位于其中的所有点。

下面是关于如何将点添加到 map 的代码:

private void plotRoute(List<DeliveryPoint> deliveryPoints) {
Logger.d("Plotting " + deliveryPoints.size() + " coordinates.");
pointsOfInterest = removeDupes(deliveryPoints);

SpatialReference SPATIAL_REFERENCE = SpatialReferences.getWgs84();

// create a red (0xFFFF0000) circle simple marker symbol
SimpleMarkerSymbol redCircleSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, 0xFFFF0000, 10);
SimpleMarkerSymbol bigOrange = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, 0xFFFF8000, 20);
SimpleMarkerSymbol bigBlue = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, 0xFF0000FF, 20);

ArrayList<Graphic> poiMarkers = new ArrayList<>();
ArrayList<Graphic> labels = new ArrayList<>();
// create a new point collection for polyline
PointCollection points = new PointCollection(SPATIAL_REFERENCE);

graphicDeliveryPointCoordinatesHashMap.clear();
int ordinal = 0;
int length = pointsOfInterest.size();
for (DeliveryPoint poi: deliveryPoints) {
Point point = new Point(poi.longitude, poi.latitude, SPATIAL_REFERENCE);
points.add(point);

TextSymbol label = new TextSymbol(12, "" + ++ordinal, 0xFFFF0000, TextSymbol.HorizontalAlignment.CENTER, TextSymbol.VerticalAlignment.MIDDLE);
Graphic labelGraphic= new Graphic(point, label);
label.setOffsetY(10);
label.setOffsetX(10);

Graphic graphic = new Graphic(point, redCircleSymbol);
if(ordinal == 1) {
graphic = new Graphic(point, bigOrange);
} else if (ordinal == length) {
graphic = new Graphic(point, bigBlue);
}
poiMarkers.add(graphic);
labels.add(labelGraphic);
graphicDeliveryPointCoordinatesHashMap.put(graphic, poi);
}

textOverlay.getGraphics().addAll(labels);
poiOverlay.getGraphics().addAll(poiMarkers);
// create a polyline from the point collection
Polyline polyline = new Polyline(points);

//define a line symbol
SimpleLineSymbol lineSymbol =
new SimpleLineSymbol(
SimpleLineSymbol.Style.SOLID,
Color.argb(255, 255, 128, 0), 1.0f);

// create the graphic with polyline and symbol
Graphic lines = new Graphic(polyline, lineSymbol);

// add graphic to the graphics overlay
poiOverlay.getGraphics().add(lines);

mapView.setOnTouchListener(new PoiTouchListener(this, mapView, poiOverlay));
}

我找到了关于如何在 JavaScript 中执行此操作的文档 Link to JS clustering但这对我没有帮助,因为似乎没有对 Android 集群的官方支持。

是否有解决此问题的方法?

最佳答案

即使在 100.x 版本发布后,SDK 也不具备相同的功能。移动 SDK 中没有开箱即用的集群层。

但是,有一些自定义实现可以满足您的需求。这似乎与您的用例相匹配: https://github.com/AshinJiang/ArcGIS-Android-Cluster

关于java - Esri-Maps 中的聚类点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58731894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com