2014-12-07 170 views
0

目前正在做一個簡單的應用程序,其中包含谷歌地圖。我想,當一個設計用戶點擊座標鏈接到下一個活動,但它沒有工作,沒有錯誤,請幫我Android谷歌地圖座標

double latitude = 1.34503109; 

    double longitude = 103.94008398; 

    LatLng latLng = new LatLng(latitude, longitude); 

    gMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
     @Override 
     public void onMapClick(LatLng latLng) { 
      Intent i = new Intent(Activity_Selecting_Bus.this, 
        Activity_Bus_Selected.class); 
      startActivity(i); 

     } 
    }); 

回答

2

如果我理解正確的話,你在你的地圖上設置標記當用戶點擊標記時,你開始另一個活動。下面的代碼應該工作(在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 
      } 
     } 
    } 
}); 
+0

很高興能幫到你,別忘了標記正確答案。祝你的程序好運! – 2014-12-07 16:55:37

+0

對不起,但如何在座標中添加? – 2014-12-07 17:05:52

+0

哪個座標? [如何添加標記](https://developers.google.com/maps/documentation/android/marker#add_a_marker) – 2014-12-07 17:23:05