如何在点击时将安卓工作室谷歌地图上的多个标记链接到网站



我一直在尝试将多个标记链接到不同的网站,但我不知道如何链接。我尝试了下面的代码,标记显示出来了,但只要我点击我设定的一个标记,它就不起作用了。我看到了一些关于堆栈溢出的其他例子,但没有什么能帮助我解决这个问题,因为它们主要是关于创建标记。请帮忙!

public void addMarkers(){
    odeon = googleMap.addMarker(new MarkerOptions().position(ODEON).title("Odeon Cinema"));
    dublinrd = googleMap.addMarker(new MarkerOptions().position(DUBLINRD).title("Movie House Cinema, Dublin Rd"));
    qft = googleMap.addMarker(new MarkerOptions().position(QFT).title("Queen's Film Theatre"));
    strand = googleMap.addMarker(new MarkerOptions().position(STRAND).title("Strand Cinema"));
    odyssey = googleMap.addMarker(new MarkerOptions().position(ODYSSEY).title("Odyssey Cinema"));
    kennedy = googleMap.addMarker(new MarkerOptions().position(KENNEDY).title("Omniplex - Kennedy Centre"));
    cityside = googleMap.addMarker(new MarkerOptions().position(CITYSIDE).title("Movie House Cinema - City Side"));
    googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            if (marker.getTitle().equalsIgnoreCase("Odeon Cinema")) {
                Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("www.odeon.co.uk/films/"));
                startActivity(i);
                return true;
            } else {
                return false;
            }
        }
    });
}

您可以尝试以下操作:private HashMap电影标记;(如果你创建一个一流的电影院会更好)

然后你可以做:

     public void addMarkers() {
     //for each cinema
    cinemaMarker.put(googleMap.addMarker(cinema.getMarker()),cinema);
  }

在你的电影课上,它会是这样的:

public class Cinema {
    String name;
    String webSite;
    LatLng position;
        public Cinema(String name, String webSite, LatLng position) {
            this.name = name;
            this.webSite = webSite;
            this.position = position;
        }
        public String getName() {
            return name;
        }
        public String getWebSite() {
            return webSite;
        }
        public LatLng getPosition() {
            return position;
        }
        public MarkerOptions getMarker(){
            return new MarkerOptions().position(position).title(name);
        }
    }

因此,在调用addMarker()之前,您可以执行以下操作:

        List<Cinema> cinemas = new ArrayList<>();
    public void MockData() {
        cinemas.add(new Cinema("odeo",ODEO,"ODEON CINEMA"));
//[...] for each cinema you want;
}

最后是

googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
 Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(
cinemaMarker.get(marker).getWebSite));
                startActivity(i);
        }
    });

最新更新