2012-02-08 84 views
1

我試圖創建一個應用程序,將通過GPS獲取用戶位置,顯示谷歌地圖中的用戶位置,然後更新一定的時間/運動後。android - eclipse:顯示谷歌地圖使用座標獲得使用gps

我目前有一個應用程序可以通過gps獲取用戶位置,並且每10米/ 10,000毫秒更新一次,但是目前它所做的只是顯示座標是什麼。我已經設置好連接到谷歌地圖,但是現在只需將地圖設置爲我手動輸入的一些座標。

我如何得到它,所以地圖將顯示基於通過gps獲得的座標的位置?

任何幫助將不勝感激,我對這一切都很新!

編輯:繼承人我的代碼到目前爲止!

package com.android.basicmap; 

import com.google.android.maps.MapActivity; 
import android.os.Bundle; 
import com.google.android.maps.MapView; 
import com.google.android.maps.MapController; 
import com.google.android.maps.GeoPoint; 
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 

public class BasicMapActivity extends MapActivity { 

private MapView mapView; 
private MapController mapController; 

private LocationManager locationManager; 
private LocationListener locationListener; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    locationListener = new GPSLocationListener(); 

    locationManager.requestLocationUpdates(
     LocationManager.GPS_PROVIDER, 
     0, 
     0, 
     locationListener); 

    mapView = (MapView) findViewById(R.id.mapView); 
    mapView.setStreetView(true); 
    mapView.setBuiltInZoomControls(true); 

    mapController = mapView.getController(); 
    mapController.setZoom(16); 
} 

@Override 
protected boolean isRouteDisplayed() { 
    return false; 
} 

private class GPSLocationListener implements LocationListener 
{ 
    @Override 
    public void onLocationChanged(Location location) { 
    if (location != null) { 
     GeoPoint point = new GeoPoint(
      (int) (location.getLatitude() * 1E6), 
      (int) (location.getLongitude() * 1E6)); 

     Toast.makeText(getBaseContext(), 
      "Latitude: " + location.getLatitude() + 
      " Longitude: " + location.getLongitude(), 
      Toast.LENGTH_SHORT).show(); 

     mapController.animateTo(point); 
     mapController.setZoom(16); 
     mapView.invalidate(); 
    } 
    } 


} 

}

+0

嗨,歡迎來到Stack Overflow!如果您包含一些_relevant_代碼段,您將有更好的機會讓您的問題得到解答。例如,你提到你有位置更新工作,但沒有地圖更新部分。從您的Map類中包含_relevant_片段可能是一個好主意。 – 2012-02-08 17:59:34

回答

7

這裏有一個全面的教程:http://www.codeproject.com/Articles/112044/GPSLocator-App-to-Find-Current-Nearest-Location-us

不過來了,我發現,通過輸入「機器人如何顯示在谷歌地圖的GPS定位」,請,谷歌更徹底,並在發佈前經過教程這樣簡單的問題:)

+0

本教程正是我正在尋找的,可悲的是我已經有幾次嘗試完成它,但我無法完成它!無論如何,感謝您張貼它。 – armstrong398 2012-02-09 13:25:15

+0

它說什麼,而不工作?讓我們來通讀:)另外,如果答案令人滿意,可以考慮將其標記爲已接受 - 點擊左側的小複選標記。 – 2012-02-09 14:02:28

+0

我已完成本教程的第一部分:添加地圖和縮放控件,它的下一部分「添加gps位置」,它引發了大量錯誤!我在原始文章中更新了我的代碼,以向您展示我的位置到目前爲止,在教程中,也許你可以看到我要去哪裏錯了!非常感謝 – armstrong398 2012-02-09 14:25:37

1

假設你正在使用MapView,以最簡單的做法是添加MyLocationOverlay一個實例地圖,爲Android將會爲您處理顯示用戶的位置。

map=(MapView)findViewById(R.id.whatever_your_mapview_id_is); 
map.getOverlays().add(new MyLocationOverlay(this, map)); 

如果你想要做的是你自己,而不是使用內置工具某些原因,你可以創建自己的ItemizedOverlay顯示的位置,並添加自己的自定義疊加層的一個實例的MapView

0

如果您想顯示用戶的當前位置,最好使用MyLocationOverlay。然而,你有選擇:

map.animateTo(GeoPoint); 
0

假設u've定義你的MapView和mapcontroller

爲,首先你neeed suscribe位置更新您的onCreate方法類似:初級講座請求更新的代碼每1000毫秒或10米

LocationManager lm; 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10f, this); 

下面你是我的方式來更新地圖上我的立場

@Override 
GeoPoint p,P2, p3; 
double lat=53, double lng=4; 
    public void onLocationChanged(Location location) { 
     Log.v(tag, "Location Changed"); 

     lat= (int) (location.getLatitude()); 
     lng= (int) (location.getLongitude()); 

     sb = new StringBuilder(512); 

     noOfFixes++; 

     p = new GeoPoint(
       (int) (location.getLatitude()*1E6), 
       (int) (location.getLongitude()*1E6)); 
     mapController.animateTo(p); 
     mapController.setCenter(p); 

     Toast.makeText(this, "Lat= " + lat + " Long= " + lng, Toast.LENGTH_SHORT).show(); 




    } 
+0

如果你需要完整的代碼或更多的幫助,讓我知道:-) – youssoua 2012-02-08 20:03:45

+0

我已經嘗試使用你的代碼,盡我所能,但我仍然無法得到它的工作!我編輯了我的帖子以包含我的代碼,我不知道這是否會讓您更好地瞭解我要去哪裏錯誤!非常感謝您的幫助。 – armstrong398 2012-02-09 13:27:41