在MarkerClick上使用String Builder从用户位置到标记的方向路线

时间:2014-12-14 12:02:59

标签: android google-maps google-maps-android-api-2 stringbuilder

我想要做的只是在点击标记时显示我的碎片地图的行车路线。

Tutorial是我的来源。

此时路线仅显示在不在myactivity布局中的OTHER应用中。我想要做的是在我的片段中显示行车路线

这是我的MainActivity.Class

public class MainActivity extends ActionBarActivity implements GoogleMap.OnMarkerClickListener {

private LatLng Mark_Kantor_Gubernur = new LatLng(-0.9376155, 100.3600001);
private LatLng Mark_Bappeda_prov_Sumbar = new LatLng(-0.913884, 100.359176);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //Getting Map From Google
    SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.googleMap);
    googleMap = supportMapFragment.getMap();
    googleMap.setMyLocationEnabled(true);
    googleMap.getUiSettings().setCompassEnabled(true);
    googleMap.getUiSettings().setZoomControlsEnabled(true);
    googleMap.setTrafficEnabled(true);

    //Getting Location Based on Fused Location(GPS & Network)
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    String bestProvider = locationManager.getBestProvider(criteria, true);
    Location location = locationManager.getLastKnownLocation(bestProvider);
    double latitude = location.getLatitude();
    double longitude = location.getLongitude();
    LatLng latLng = new LatLng(latitude, longitude);

    //Handle map when opened on first time
    googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
    googleMap.animateCamera(CameraUpdateFactory.zoomTo(13));


    //Setting UP Marker
    googleMap.addMarker(new MarkerOptions().position(Mark_Kantor_Gubernur)
                                           .title("Kantor Gubernur")
                                           .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_cp)));

    googleMap.addMarker(new MarkerOptions().position(Mark_Bappeda_prov_Sumbar)
                                           .title("Kantor Bappeda SUMBAR")
                                           .icon(BitmapDescriptorFactory
                                           .fromResource(R.drawable.marker_cp)));

    TextView locationTV = (TextView) findViewById(R.id.tvLatLongLocation);
    locationTV.setText("Latitude:" + latitude + ",Longitude:" + longitude);

    //Setting onclick marker & Direction to Marker
    googleMap.setOnMarkerClickListener(this);

}

@Override
public boolean onMarkerClick(Marker marker) {
    //you can handle marker click from here


    try {
        StringBuilder stringBuilder = new StringBuilder();
        String daddr = (String.valueOf(marker.getPosition().latitude)+","+String.valueOf(marker.getPosition().longitude));

        stringBuilder.append("http://maps.google.com/maps?f=d&hl=en");

        stringBuilder.append("&saddr="+String.valueOf(googleMap.getMyLocation().getLatitude())+","
                +String.valueOf(googleMap.getMyLocation().getLongitude()));

        stringBuilder.append("&daddr="+daddr);
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(stringBuilder.toString()));
        startActivity(intent);

    }catch (Exception ee)
        {
        Toast.makeText(getApplicationContext(), "Lokasi Saat Ini Belum Didapatkan, Coba Nyalakan GPS, Keluar Ruangan dan Tunggu Beberapa Saat", Toast.LENGTH_LONG).show();
        }
    return false;
}

我查看了J2ME/Android/BlackBerry - Driving directions, Route Between Two LocationsDraw Route On Google Map,但这只显示了用户位置和目的地之间的直线,我想要的是行车路线。

如果我添加此折线代码:

Polyline polyline = googleMap.addPolyline(new PolylineOptions().add(new LatLng(googleMap.getMyLocation().getLatitude(), googleMap.getMyLocation().getLongitude()),new LatLng(marker.getPosition().latitude, marker.getPosition().longitude)).width(2).color(Color.RED).geodesic(true));

它只显示Google地图片段中的直线

注意:请在答案代码中加入评论和解释,我是非常新的android并且还在学习。

1 个答案:

答案 0 :(得分:0)

选择器元素应放在res \ drawable中。右键点击' drawable',选择' new'然后选择' Drawable资源文件'。命名文件,你应该好好去。