问题是我无法点击网址" www.news.com"显示在标记的自定义信息窗口内的andoid map v2上。 在xml布局文件中我有:
<TextView
android:id="@+id/web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:background="#ADD8E6"
android:text="www.google.gr"
android:linksClickable="true"/>
在Java活动文件中,我有:
mMap.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker marker) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker marker) {
// Getting view from the layout file info_window_layout
View v = getLayoutInflater().inflate(R.layout.infowindow_layout, null);
TextView tvTitle = (TextView) v.findViewById(R.id.title);
tvTitle.setText(marker.getTitle());
TextView tvSnippet = (TextView) v.findViewById(R.id.snippet);
tvSnippet.setText(marker.getSnippet());
// URL
final TextView tvURL =(TextView) v.findViewById(R.id.web);
tvURL.setText("www.news.com");
Linkify.addLinks(tvURL, Linkify.WEB_URLS);
// URL
链接显示正常,蓝色和下划线,但我发现它只是一个死链接。如果我们试图点击它,什么也没发生。我需要做些什么才能使链接生效?
在java文件中插入新代码:
mMap.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker marker) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker marker) {
// Getting view from the layout file info_window_layout
View v = getLayoutInflater().inflate(R.layout.infowindow_layout, null);
TextView tvTitle = (TextView) v.findViewById(R.id.title);
tvTitle.setText(marker.getTitle());
TextView tvSnippet = (TextView) v.findViewById(R.id.snippet);
tvSnippet.setText(marker.getSnippet());
// URL
final TextView tvWeb =(TextView) v.findViewById(R.id.web);
tvWeb.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.news.com"));
startActivity(viewIntent);
}
});
XML使用相同的内容:
<TextView
android:id="@+id/web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:background="#ADD8E6"
android:text="www.news.com"
android:linksClickable="true"/>
仍存在问题..URL链接未激活,我无法打开浏览器。
现在,当我点击自定义信息窗时,URL链接将向移动浏览器开放。
mMap.addMarker(new MarkerOptions().position(new LatLng(39.686286, 19.838443)).title("Hi").snippet("Name, Surname, phone: 1093595, website: www.news.com").icon(BitmapDescriptorFactory.fromResource(R.drawable.location_icon)));
mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.news.com"));
startActivity(viewIntent);
}
});
但我有大约300个标记,我希望打开一个单独的URL链接。我该如何实现呢?
更新代码:
mMap.addMarker(new MarkerOptions().position(new LatLng(36.84449, 22.99999)).title("KALOGRIA").snippet("Name: Messinia \nSurname: Stoupa \nphone: +99999999 \nwebsite: http://www.news.com/").icon(BitmapDescriptorFactory.fromResource(R.drawable.location_icon)));
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener()
{
@Override
public void onInfoWindowClick(Marker marker)
{
//String webUrl = marker.getSnippet();
String snippetStr = marker.getSnippet();
String webUrl = snippetStr.substring(snippetStr.lastIndexOf("website:") + 1);
Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(webUrl));
startActivity(viewIntent);
}
});
答案 0 :(得分:1)
信息窗口不是实时视图,而是视图在地图上呈现为图像。因此,视图仅响应单击作为整个视图。对于您的情况,我认为您必须使用GoogleMap.setOnInfoWindowClickListener
,然后检索要启动的Web字符串。
[<强> UPDATE1 强>
也许你可以尝试这种方式:
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener()
{
@Override
public void onInfoWindowClick(Marker thisMarker)
{
Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.news.com"));
startActivity(viewIntent);
}
});
[<强> UPDATE2 强>
对于您有几个Marker
的情况,并且想要在点击每个Activity
时打开不同的Marker
,那么一个解决方案就是将Activity
信息放到{{} 1}} Marker
为:
Snippet
然后点击Marker marker = mMap.addMarker(new MarkerOptions()
.position(...)
.title(...)
.snippet("http://www.news.com"); //put your activity info here
Marker