2010-12-13 24 views
21

Tôi đang cố gắng trả lại vị trí được người dùng chọn trong ứng dụng Google Maps dành cho Android, nhưng tôi dường như không thể tìm thấy thông tin về cách thực hiện tác vụ này.Nhận vị trí đã chọn từ hoạt động trên Google Maps

Tôi đã tạo Mục đích để mở Hoạt động GMaps, nhưng người dùng không thể chọn một điểm trên bản đồ cũng như không hoạt động trả về một điểm cho ứng dụng của tôi khi nó đóng.

Tôi đang sử dụng startActiviyForResult, vì tôi đang chờ kết quả từ Hoạt động.

Trả lời

15

sử dụng API Google. Bạn chỉ cần tạo MapActivity của riêng bạn với MapView. Here is great tutorial on Google API Bao gồm vị trí nhận trên vòi ngón tay. Hy vọng điều này sẽ giúp.

+0

Liên kết hết hạn Vui lòng cập nhật! – Killer

4

Không có khả năng như vậy - bạn chỉ có thể mở Maps với vị trí được chỉ định http://developer.android.com/guide/appendix/g-app-intents.html.

Thay vào đó, bạn nên tạo Hoạt động của riêng mình bằng MapView bằng cách sử dụng Maps External Library.

+1

Sigh! Tôi muốn hoạt động trên Maps hỗ trợ trường hợp sử dụng đơn giản này. Việc sử dụng thư viện Maps bên ngoài yêu cầu sự cho phép của Internet trong ứng dụng, điều này quá mức cần thiết cho ứng dụng của tôi. – HRJ

6

Đối với bản đồ API V2, bạn có thể sử dụng onMapClickListener.

map.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 

     @Override 
     public void onMapClick(LatLng point) { 
      Toast.makeText(getApplicationContext(), point.toString(), Toast.LENGTH_SHORT).show(); 
     } 
}); 

Để biết chi tiết: https://developers.google.com/maps/documentation/android/interactivity

+0

cảm ơn, tôi đã tìm kiếm điều này –

1

Tôi đoán bạn đang tìm kiếm các dấu hiệu kéo.

mMap.setMyLocationEnabled(true); 
mLocation = mMap.getMyLocation(); 
mMap.addMarker(new MarkerOptions().position(new LatLng(mLocation.getLatitude(), mLocation.getLongitude())).draggable(true)); 
      mMap.setOnMarkerDragListener(new OnMarkerDragListener() { 

       @Override 
       public void onMarkerDrag(Marker marker) { 

       } 
       @Override 
       public void onMarkerDragEnd(Marker marker) { 
        LatLng newLocation = marker.getPosition(); 
        mLocation.setLatitude(newLocation.latitude); 
        mLocation.setLongitude(newLocation.longitude); 
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mLocation.getLatitude(), mLocation.getLongitude()), 15.0f)); 

       } 
       @Override 
       public void onMarkerDragStart(Marker marker) {} 

      }); 

sau đó trả lại vị trí mới của bạn.i.e mLocation.

36

Bạn có thể chỉ cần sử dụng PlacePicker thay vì triển khai MapActivity của riêng bạn. Bạn sẽ cần thêm tham chiếu thư viện Dịch vụ của Google Play trong dự án của mình.

Chỉ startActivityForResult với mục đích cung cấp bởi PlacePicker.IntentBuilder

int PLACE_PICKER_REQUEST = 1; 
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); 

Context context = getApplicationContext(); 
startActivityForResult(builder.build(context), PLACE_PICKER_REQUEST); 

Và sau đó nhận được các kết quả trong onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == PLACE_PICKER_REQUEST) { 
    if (resultCode == RESULT_OK) { 
     Place place = PlacePicker.getPlace(data, this); 
     String toastMsg = String.format("Place: %s", place.getName()); 
     Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show(); 
    } 
    } 
} 

Vui lòng tham khảo https://developers.google.com/places/android/placepicker để biết thêm chi tiết.

Đã quá muộn để trả lời câu hỏi của bạn nhưng hy vọng điều này sẽ giúp ai đó có cùng yêu cầu.

+0

Tuyệt vời tôi đang tìm kiếm điều này :) tôi sẽ thử nó – hadi

+0

Thật không may là hoạt động của PlacePicker không cho phép người dùng tìm kiếm – satur9nine

+0

Điều này cực kỳ gọn gàng. A + – pandalion98

1

Bạn có thể dễ dàng thực hiện việc đó với Mapbox Android SDK. Họ có một hướng dẫn tốt:

How to build a location picker for your app! | Mapbox

Các thành phần chính cần thiết là:

  • ImageView Android cho pin thả.
  • API trình đánh dấu SDK Android Mapbox.
  • Dịch vụ Android Mapbox để thực hiện mã hóa địa lý.

Location picker

Các vấn đề liên quan