如果我理解正確的話,你在你的地圖上設置標記當用戶點擊標記時,你開始另一個活動。下面的代碼應該工作(在SupportMapFragment
):
getMap().setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
// do the thing!
return true;
}
});
如果沒有標記,想監聽某個位置點擊使用這個代替:
getMap().setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
// do the thing!
}
});
在這種情況下,你可能希望當用戶點擊「足夠接近」某個位置時開始活動。我使用這個庫http://googlemaps.github.io/android-maps-utils/其中包含方法
SphericalUtil.computeDistanceBetween(LatLng from, LatLng to)
它返回計兩個LatLng
S之間的距離。
編輯示例:
首先定義了用戶必須點擊和活動不特定的點擊啓動:
private static final HashMap<LatLng, Class<? extends Activity>> sTargets = new HashMap();
static {
sTargets.put(new LatLng(34.0204989,-118.4117325), LosAngelesActivity.class);
sTargets.put(new LatLng(42.755942,-75.8092041), NewYorkActivity.class);
sTargets.put(new LatLng(42.352711,-83.099205), DetroitActivity.class);
}
private static final int RANGE_METERS = 200 * 1000; // 200 km range
然後,當在地圖上的用戶點擊,你計算距離到每個點。如果適合,則啓動該活動。
getMap().setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng input) {
for(Map.Entry<LatLng,<? extends Activity>> entry : sTargets.entrySet()) {
LatLng ll = entry.getKey();
boolean inRange = SphericalUtil.computeDistanceBetween(input, ll) < RANGE_METERS;
if (inRange) {
Class<? extends Activity> cls = entry.getValue();
Intent i = new Intent(getActivity(), cls);
getActivity().startActivity(i);
break; // stop calculating after first result
}
}
}
});
很高興能幫到你,別忘了標記正確答案。祝你的程序好運! – 2014-12-07 16:55:37
對不起,但如何在座標中添加? – 2014-12-07 17:05:52
哪個座標? [如何添加標記](https://developers.google.com/maps/documentation/android/marker#add_a_marker) – 2014-12-07 17:23:05