類似于標記周圍的脈沖環。我想要實作的是......我有很多折線都有緯度/緯度。在時間 t,用戶可以決定選擇他們選擇的任何折線。我通過藍牙獲得他們當前的實時位置坐標。我想使用該位置來確定它們與他們選擇的折線的距離,并根據距離更改/影片該折線。我正在使用 google maps API、android studio、kotlin
uj5u.com熱心網友回復:
這是一個簡單的例子 - 一個方法,它接受一個Polyline實體和一個處理程式(必須在主回圈器上)并開始重復更新折線寬度。
(添加了 Kotlin)
private lateinit var polyline: Polyline;
private lateinit var handler : Handler;
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
var ptlist = ArrayList<LatLng>();
// add polyline
ptlist.add(LatLng(40.437761, -3.704751));
ptlist.add(LatLng( 40.405072, -3.678678));
ptlist.add(LatLng( 40.397158, -3.742706));
ptlist.add(LatLng(40.437761, -3.704751));
handler = Handler(Looper.getMainLooper());
polyline = mMap.addPolyline(PolylineOptions().addAll(ptlist));
val runnableCode = object: Runnable {
override fun run() {
var w = polyline.width;
w = w 0.5f;
if (w > 25.0) {
w = 1.0f;
}
polyline.setWidth(w);
handler.postDelayed(this, 50);
}
}
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(40.415521, -3.700995), 12f));
handler.postDelayed(runnableCode, 50);
}
在此示例中,折線的寬度p將從 [25.0 1.0] 開始變化,每 200 毫秒增加 0.5。當它達到最大寬度時,它會重置為 1.0 的寬度。原始寬度被忽略。
顯然根據需要更改引數 - 或使其脈沖進出。

(Java 等效項 - 影片引數不同。)
public void pulsePolyline(final Polyline p, final Handler h)
{
h.postDelayed(new Runnable() {
@Override
public void run() {
float w = p.getWidth();
w = (w 0.1);
if (w > 10.0) w = 1.0;
p.setWidth(w);
h.postDelayed(this, 200);
}
}, 200);
}
請注意,處理程式必須來自主執行緒(或回圈器),如下所示:
new Handler(Looper.getMainLooper())
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481564.html
