2016-09-02 5 views
-2

Я разрабатываю приложение Android для Android, показывающее текущее местоположение на карте.Как узнать местоположение широты и долготы маркера и нарисовать полилинию

enter image description here

У меня есть панель поиска в приложении, когда пользователь вводит любое имя области, то второй маркер будет размещен на этом месте.

enter image description here

Теперь моя проблема в том, как получить второй маркер широту и долготу положения и проложить маршрут между двумя маркерами.

мой MainActivity.java код следующим образом:

public class MainActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 

    public void onMapSearch(View view) { 
     EditText locationSearch = (EditText) findViewById(R.id.editText); 
     String location = locationSearch.getText().toString(); 
     List<Address> addressList = null; 

     if (location != null || !location.equals("")) { 
      Geocoder geocoder = new Geocoder(this); 
      try { 
       addressList = geocoder.getFromLocationName(location, 1); 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      Address address = addressList.get(0); 
      LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude()); 
      mMap.addMarker(new MarkerOptions().position(latLng).title("Marker")); 
      mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 
     } 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     // Add a marker in Sydney and move the camera 
     LatLng sydney = new LatLng(27.746974, 85.301582); 
     mMap.addMarker(new MarkerOptions().position(sydney).title("Kathmandu, Nepal")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      return; 
     } 
     // Enable MyLocation Button in the Map 
     mMap.setMyLocationEnabled(true); 
    } 
} 

Пожалуйста, помогите мне.

+0

Проверить решение здесь, если вы хотите, чтобы нарисовать путь между вашими местами HTTP: //stackoverflow.com/questions/26112591/draw-path-between-two-points-on-the-map-google-maps-using-eclipse/26113218#26113218 – Namy

+0

не могли бы вы рассказать о своем ответе. –

+0

Я не знаю, t иметь вторую марку широты и долготы, как получить эти значения из моего кода. –

ответ

0

В вашей программе вы использовали код для получения LatLng второго маркера.

LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude()); 
mMap.addMarker(new MarkerOptions().position(latLng).title("Marker")); 

Чтобы сделать полилинию, перейдите по этой ссылке. На этот вопрос уже был дан ответ.

https://www.simplifiedcoding.net/google-maps-distance-calculator-google-maps-api/

+0

У меня уже есть этот код. –

+0

http://stackoverflow.com/questions/38583015/how-to-calculate-distance-and-duration-for-multiple-locations-using-distance-mat/38583719#38583719 –

+0

У меня есть DirectionsJSONParser.java файл, который включает ваш код. –

0

Набор Google Places API для поиска EdiText. Получить значение от этого и передать его в качестве адреса ..

Вот код (address обозначая strAddress здесь)

List<Address> address = null; 
    Geocoder coder = new Geocoder(getApplicationContext()); 
    try { 
     address = coder.getFromLocationName(strAddress, 1); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    if (address != null) { 
     Address location = address.get(0); 
     double lat = location.getLatitude(); 
     double log = location.getLongitude(); 
    } 
Смежные вопросы