如何知道标记纬度和经度位置并绘制折线

时间:2016-09-02 05:31:28

标签: android google-maps latitude-longitude

我正在开发一个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);
    }
}

请帮助我。

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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();
    }