Android: 如何在onMapReady 方法中将Url link 添加到Marker?
Android: How to add Url link to the Marker in onMapReady method?
我使用地图 API 创建了地图,并使用经纬度坐标设置了标记。我不知道如何设置 Url link 以在单击标记时移动到浏览器。
因为我有这么多标记,每个标记都应该移动到一个差异 url,这怎么可能?
public void onMapReady(GoogleMap googleMap)
{
mMap = googleMap;
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
{
mMap.setMyLocationEnabled(true);
Toast.makeText(MapsActivity.this,"Tap on Zoom button to view the Current Location",Toast.LENGTH_LONG).show();
}
else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_FINE_LOCATION);
}
}
mMap.addMarker(new MarkerOptions().position(
new LatLng(12.9969284, 80.25792380000007)).title("A2B Car Parking").icon(
BitmapDescriptorFactory.fromBitmap(BitmapFactory
.decodeResource(getResources(),
R.drawable.red_icon))).anchor(0.5f, 1f));
mMap.addMarker(new MarkerOptions().position(
new LatLng(13.0327601, 80.27573810000001)).title("Free Parking Place").icon(
BitmapDescriptorFactory.fromBitmap(BitmapFactory
.decodeResource(getResources(),
R.drawable.red_icon))).anchor(0.5f, 1f));
mMap.addMarker(new MarkerOptions().position(
new LatLng(13.0414623,80.24994960000004)).icon(
BitmapDescriptorFactory.fromBitmap(BitmapFactory
.decodeResource(getResources(),
R.drawable.red_icon))).anchor(0.5f, 1f));}
将 mMap 视为您的地图对象。
mMap.setOnMarkerClickListener(new OnMarkerClickListener()
{
@Override
public boolean onMarkerClick(Marker arg0) {
String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
return true;
}
});
您必须在您的 activity 或您拥有 google 地图
的片段中实施标记 onClick 事件
请检查下面的片段
public class MapActivity extends android.support.v4.app.FragmentActivity
implements OnMarkerClickListener
{
private Marker myMarker;
private HashMap<Marker,String> hashmap = new HashMap<>();
private void setUpMap()
{
.......
googleMap.setOnMarkerClickListener(this);
myMarker = googleMap.addMarker(new MarkerOptions()
.position(latLng)
.title("My Spot")
.snippet("This is my spot!")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
hashmap.put(myMarker,url);
}
@Override
public boolean onMarkerClick(final Marker marker) {
if (marker.equals(myMarker))
{
Uri uriUrl = Uri.parse(hashmap.get(myMarker));
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
}
}
}
我使用地图 API 创建了地图,并使用经纬度坐标设置了标记。我不知道如何设置 Url link 以在单击标记时移动到浏览器。
因为我有这么多标记,每个标记都应该移动到一个差异 url,这怎么可能?
public void onMapReady(GoogleMap googleMap)
{
mMap = googleMap;
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
{
mMap.setMyLocationEnabled(true);
Toast.makeText(MapsActivity.this,"Tap on Zoom button to view the Current Location",Toast.LENGTH_LONG).show();
}
else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_FINE_LOCATION);
}
}
mMap.addMarker(new MarkerOptions().position(
new LatLng(12.9969284, 80.25792380000007)).title("A2B Car Parking").icon(
BitmapDescriptorFactory.fromBitmap(BitmapFactory
.decodeResource(getResources(),
R.drawable.red_icon))).anchor(0.5f, 1f));
mMap.addMarker(new MarkerOptions().position(
new LatLng(13.0327601, 80.27573810000001)).title("Free Parking Place").icon(
BitmapDescriptorFactory.fromBitmap(BitmapFactory
.decodeResource(getResources(),
R.drawable.red_icon))).anchor(0.5f, 1f));
mMap.addMarker(new MarkerOptions().position(
new LatLng(13.0414623,80.24994960000004)).icon(
BitmapDescriptorFactory.fromBitmap(BitmapFactory
.decodeResource(getResources(),
R.drawable.red_icon))).anchor(0.5f, 1f));}
将 mMap 视为您的地图对象。
mMap.setOnMarkerClickListener(new OnMarkerClickListener()
{
@Override
public boolean onMarkerClick(Marker arg0) {
String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
return true;
}
});
您必须在您的 activity 或您拥有 google 地图
的片段中实施标记 onClick 事件请检查下面的片段
public class MapActivity extends android.support.v4.app.FragmentActivity
implements OnMarkerClickListener
{
private Marker myMarker;
private HashMap<Marker,String> hashmap = new HashMap<>();
private void setUpMap()
{
.......
googleMap.setOnMarkerClickListener(this);
myMarker = googleMap.addMarker(new MarkerOptions()
.position(latLng)
.title("My Spot")
.snippet("This is my spot!")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
hashmap.put(myMarker,url);
}
@Override
public boolean onMarkerClick(final Marker marker) {
if (marker.equals(myMarker))
{
Uri uriUrl = Uri.parse(hashmap.get(myMarker));
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
}
}
}