如何获取特定折线上的数据

How to get the data on a specific Polyline

我想在特定折线坐标上显示 Toast,例如,在此代码中我想在该特定折线上显示 Toast,但是,onPolylineClick Toast 显示的是最后的数据由程序读取,在本例中为 'polylineClicker2()'。

折线放置在我给定的各自坐标上,只有吐司在做程序上次读取的内容。

public void polylineClicker() {

        LatLng postition1  = new LatLng(14.601796, 121.006707);
        LatLng postition2  = new LatLng(14.601033, 120.998558);
        PolylineOptions popOption = new PolylineOptions()
                .add(postition1).add(postition2).width(5).color(Color.YELLOW).clickable(true);
        map.addPolyline(popOption);


        map.setOnPolylineClickListener(new GoogleMap.OnPolylineClickListener() {
            @Override
            public void onPolylineClick(Polyline polyline) {
                Toast.makeText(MainActivity.this, "Polyline near friends' house", Toast.LENGTH_SHORT).show();
            }
        });


    }
    public void polylineClicker2() {
        LatLng position1  = new LatLng(14.617106, 120.989924);
        LatLng position2  = new LatLng(14.616068, 120.990939);
        PolylineOptions popOption = new PolylineOptions()
                .add(position1).add(position2).width(5).color(Color.YELLOW).clickable(true);
        map.addPolyline(popOption);


        map.setOnPolylineClickListener(new GoogleMap.OnPolylineClickListener() {
            @Override
            public void onPolylineClick(Polyline polyline) {
                Toast.makeText(MainActivity.this, "Polyline near my house", Toast.LENGTH_SHORT).show();
            }
        });
    }

您在 polylineClicker2 上设置的 GoogleMap.OnPolylineClickListener 覆盖了您在 polylineClicker 上设置的 GoogleMap.OnPolylineClickListener(假设您在 polylineClicker 之前调用 polylineClicker2).

您只需创建一个 GoogleMap.OnPolylineClickListener,并且由于您需要不同的行为(不同的消息),您可以使用标签。使用您的代码:

public void polylineClicker() {
    LatLng position1  = new LatLng(14.601796, 121.006707);
    LatLng position2  = new LatLng(14.601033, 120.998558);
    PolylineOptions popOption = new PolylineOptions()
            .add(position1).add(position2).width(5).color(Color.YELLOW).clickable(true);
    map.addPolyline(popOption).setTag("Polyline near friends' house");
}

public void polylineClicker2() {
    LatLng position1  = new LatLng(14.617106, 120.989924);
    LatLng position2  = new LatLng(14.616068, 120.990939);
    PolylineOptions popOption = new PolylineOptions()
            .add(position1).add(position2).width(5).color(Color.YELLOW).clickable(true);
    map.addPolyline(popOption).setTag("Polyline near my house");
}

并在您需要的任何地方设置 GoogleMap.OnPolylineClickListener,例如在调用 polylineClickerpolylineClicker2 之前在您的 onMapReady 上设置:

map.setOnPolylineClickListener(new GoogleMap.OnPolylineClickListener() {
    @Override
    public void onPolylineClick(Polyline polyline) {
        Toast.makeText(MainActivity.this, (String) polyline.getTag(), Toast.LENGTH_SHORT).show();
    }
});