30/09/2018, 17:33

Làm sao để getMyLocation khi dùng google map API?

Mình đang viết ứng dụng trên android nhưng không biết làm sao để lấy địa chỉ của bản thân.
http://www.joellipman.com/articles/google/android-o-s/app-development/733-basic-android-app-using-google-maps-and-current-location.html
Mình có tham khảo link trên nhưng lại không thể chạy được.
setUpMap của mình:

private void setUpMap() {
            LatLng SaiGon = new LatLng(10.10, 106.22);
            /*
            //getMyLocation
            mMap.setMyLocationEnabled(true);
            LocationManager locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
            Criteria criteria = new Criteria();
            String provider = locationManager.getBestProvider(criteria,true);
            Location myLocation = locationManager.getLastKnownLocation(provider);
            LatLng curLoc = new LatLng(myLocation.getLatitude(),myLocation.getLongitude());*/
            //curLoc.latitude = myLocation.getLatitude();
            //curLoc.longitude = myLocation.getLongitude();
            mMap.setMapType(1);
            mMap.addMarker(new MarkerOptions().position(SaiGon).title("Hello SaiGon"));
            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(SaiGon, 10));
            //Draw a circle
            mMap.addCircle(new CircleOptions().center(SaiGon).radius(1000).fillColor(100));
    }

p/s: Mình có thể lấy địa chỉ của các địa danh hay địa điểm được không?

Do không biết bạn code sao mà không được nên mình tư vấn thêm cách nữa:

// By documentation:
// https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding
public static class GetAddressTask extends
		AsyncTask<Object, Object, GoogleAddressResponse> {
	private static final String TAG = "GetAddressTask";
	private double longtitude;
	private double lattitude;
	private WeakReference<OnGetAddressFinish> mWeakGetAddressTask;

	public GetAddressTask(Context context, double longtitude,
			double lattitude, OnGetAddressFinish getAddressFinish) {
		this.lattitude = lattitude;
		this.longtitude = longtitude;
		mWeakGetAddressTask = new WeakReference<LocationUtils.OnGetAddressFinish>(
				getAddressFinish);
	}

	@Override
	protected GoogleAddressResponse doInBackground(Object... params) {
		// always use locale=japan for dectect region
		String language = "ja"; // Cái này từ setting kéo qua nhé.
		LogUtils.i(TAG, "Language=" + language);
		String url = "http://maps.googleapis.com/maps/api/geocode/json?latlng="
				+ lattitude + "," + longtitude + "&sensor=false&language=" + language;
		String response;
		try {
			response = RestCaller.execute(url);
			return (GoogleAddressResponse) JsonUtil.fromJson(response,
					GoogleAddressResponse.class);
		} ...
		return null;
	}

	@Override
	protected void onPostExecute(GoogleAddressResponse result) {
		super.onPostExecute(result);
		if (result != null && result.status.equals("OK")) {
			if (mWeakGetAddressTask.get() != null) {
				if (result.results != null && result.results.size() > 0) {
					mWeakGetAddressTask.get().onGetAddressSuccess(
							result.results.get(0).formatted_address);
				} else {
					mWeakGetAddressTask.get().onGetAddressError();
				}
			}
		} else {
			if (mWeakGetAddressTask.get() != null)
				mWeakGetAddressTask.get().onGetAddressError();
		}
	}
}
X viết 19:43 ngày 30/09/2018

Như thế này thì mập mờ quá, Có khi lại chưa add permission

Minh Hoàng viết 19:35 ngày 30/09/2018

Bạn có thể cho mình biết thêm về các bước để có được nó không? Mình nghĩ là xin sử dụng dịch vụ chưa đúng, với cả mình chưa hiểu cơ chế xin sử dụng như thế nào nữa.
Ở đoạn code của mình có sử dụng LOCATION_SERVICE, do trong link là một biến khác nhưng mình copy qua thì nó không chịu nên sài biến này. Không biết có phải do đây không?
p/s: Mình cũng chưa code gì phức tạp cả, mới gọi map ra thôi

Có một vài vấn đề dẫn tới hiện tượng của bạn mình cứ suy đoán dần đàn nhé:

  • Bạn đã cập nhật đúng permission trong androidmanifest chưa?
  • Bạn có tạo app trên Google để đăng kí Google Map API để điền vào bước 6 trong hướng dẫn của bạn.
  • Máy bạn có Google Play service không?
  • Bạn có đang enable location không?
Minh Hoàng viết 19:40 ngày 30/09/2018

Bạn có tạo app trên Google để đăng kí Google Map API để điền vào bước 6 trong hướng dẫn của bạn.

Bước này có phải là xin key để sử dụng Google Map API đúng không? Nếu vậy thì mình thực hiện bước này rồi. Còn 3 bước còn lại thì mình không biết. Bạn có biết bài hướng dẫn nào về 3 vấn đề còn lại không?
Chương trình của mình chỉ mới hiện bản đố, đánh marker,…
p/s: Link hướng dẫn mình chỉ copy code setUpMap nên có lẽ không đọc kĩ các phần còn lại, mình sẽ thử lại xem.
Cảm ơn bạn nhé.

TTmagic viết 19:49 ngày 30/09/2018

permission

Minh Hoàng viết 19:34 ngày 30/09/2018

:v thật đúng lúc, hôm nay mới có đúng không?

TTmagic viết 19:48 ngày 30/09/2018

:v thật đúng lúc, hôm nay mới có đúng không?

từ hôm qua rồi

Bài liên quan
0