我使用OsmDroid上開放街道地圖,可以使標記和折線,但我無法找到我如何使周圍的標誌161米/528英尺界的任何實例。如何用OSMDROID打開161米/ 528英尺的圓圈?
一)如何使社交圈嗎?
b)我如何讓它們的尺寸爲161米/ 528英尺?
我使用OsmDroid上開放街道地圖,可以使標記和折線,但我無法找到我如何使周圍的標誌161米/528英尺界的任何實例。如何用OSMDROID打開161米/ 528英尺的圓圈?
一)如何使社交圈嗎?
b)我如何讓它們的尺寸爲161米/ 528英尺?
如果你想要一個「圖形」圈子,那麼你可以很容易地實現自己的CircleOverlay,使用DirectedLocationOverlay作爲一個非常好的起點。
如果要一個「地域」圈(比將顯示或多或少爲橢圓形),則可以使用OSMBonusPack多邊形,將要使用這個數組GeoPoints的定義:
ArrayList<GeoPoint> circlePoints = new ArrayList<GeoPoint>();
iSteps = (radius * 40000)^2;
fStepSize = M_2_PI/iSteps;
for (double f = 0; f < M_2_PI; f += fStepSize){
circlePoints.add(new GeoPoint(centerLat + radius*sin(f), centerLon + radius*cos(f)));
}
(警告:我從Nominatim一塊的PHP代碼翻譯,未經測試)
感謝MKer,我就如何解決該問題的想法,並提出這一段代碼,它的工作原理:
oPolygon = new org.osmdroid.bonuspack.overlays.Polygon(this);
final double radius = 161;
ArrayList<GeoPoint> circlePoints = new ArrayList<GeoPoint>();
for (float f = 0; f < 360; f += 1){
circlePoints.add(new GeoPoint(latitude , longitude).destinationPoint(radius, f));
}
oPolygon.setPoints(circlePoints);
oMap.getOverlays().add(oPolygon);`
我知道這可以優化。無論變焦是多少,我都可以繪製360點!
謝謝MKer。這些材料出了問題當我進入半徑= 161米時,iSteps變得極大,但它讓我朝着正確的方向前進。所以我找到了另一種方法。我notived,我可以使用Geopoint.destinationPoint(radiusInMeter,fInDegrees),然後轉360度。現在我只需要提高360度的步驟。 – Rocologo