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