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

问题描述 投票:0回答:1

我想在特定折线坐标上显示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();
            }
        });
    }
android google-maps google-polyline
1个回答
1
投票

您在GoogleMap.OnPolylineClickListener上设置的polylineClicker2将覆盖您在polylineClicker上设置的那个(假设您在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.OnPolylineClickListeneronMapReady之前,将polylineClicker设置在您需要的任何地方,例如在您的polylineClicker2上:

map.setOnPolylineClickListener(new GoogleMap.OnPolylineClickListener() {
    @Override
    public void onPolylineClick(Polyline polyline) {
        Toast.makeText(MainActivity.this, (String) polyline.getTag(), Toast.LENGTH_SHORT).show();
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.