【问题标题】:Showing Driver Route between to points in Google Maps在谷歌地图中显示到点之间的司机路线
【发布时间】:2014-07-07 20:00:42
【问题描述】:

我正在使用 Google Maps v2 制作一个简单的应用程序。我想要的只是在两点之间绘制一条驱动路线。我放了折线,但它只是画直线。该线应跟踪道路。我只是不知道该怎么做。提前致谢

这段代码只是获取当前位置,我只是设置了另一个经纬度进行测试。

这是我的代码

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;

public class MainActivity extends Activity {

GoogleMap googleMap;
GPSTracker gps;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //create class GPS enabled
    gps = new GPSTracker(MainActivity.this);
    //check if GPS enabled
    if(gps.canGetLocation()){
        try{
            initializeMap();

        } catch (Exception e) {
            e.printStackTrace();
        }

        double latitude = gps.getLatitude();
        double longitude = gps.getLongitude();

        double latitude2 = 13.768000;
        double longitude2 = 122.9768100;

        GoogleMap mMap;

        MarkerOptions Marker2 = new MarkerOptions().position(new LatLng(latitude2,    longitude2)).title("2222");
        googleMap.addMarker(Marker2);
        Marker2.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
        //create Marker
        MarkerOptions Marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("iHatid Maps");
        //add marker
        googleMap.addMarker(Marker);
        // color of marker
        Marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
        //camera motion location
        CameraPosition cameraPosition = CameraPosition.builder().target(new LatLng(latitude, longitude)).zoom(20).build();
        googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

        googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

     } else {
        //can't get location
        //GPS or Network is not enabled
        //ask user to enable GPS/Network in settings
        gps.showSettingsAlert();
    }
}

private void initializeMap() {
    if(googleMap == null) {
        googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

        if(googleMap == null) {
            Toast.makeText(getApplicationContext(), 
                    "Sorry! unable to create maps", Toast.LENGTH_SHORT).show();
        }
    }
}

 @Override
    protected void onResume() {
        super.onResume();
        initializeMap();
    }


}

【问题讨论】:

  • 你需要使用一些谷歌地图中没有的路由API。您可以使用 Google Directions API developers.google.com/maps/documentation/directions
  • @tyczj - 你知道一些适合像我这样的初学者的示例代码或最佳教程吗?
  • 我为您创建了一个库,您可以在这里找到它github.com/tyczj/MapNavigator,但我建议您自己尝试一下,这样您就知道发生了什么
  • @tyczj - 感谢您的图书馆,但作为初学者,我觉得很难理解,因为没有评论。
  • 不评论是什么意思?

标签: android google-maps routes google-polyline


【解决方案1】:

使用 Google 在https://maps.googleapis.com/maps/api/directions/json... 中提供的路径信息。

看看这个链接here.

您可以找到两个地理点之间的所有信息,例如距离(在路上)、步行和驾驶模式下的持续时间。

您只需提供两个输入(起点和终点纬度)并解析那里提供的 json。

如需编码帮助,您可以关注此tutorial

【讨论】:

    【解决方案2】:

    您可以使用 google 方向 API,只需将两个点作为参数传递,google web 服务将以 JSON 格式返回路线,然后您可以解析数据,提取不同的点,最后显示路线。

    如需更多信息,请查看google direction API documentation

    【讨论】:

    • 谢谢你的回复,你的意思是我可以在我的代码中创建一个新函数并获取纬度、经度、纬度2和经度2?
    • 我其实是在说下一步;获得两个点(源、目的地)后,您可以使用 Google Direction API 获取它们之间的路线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 2017-05-12
    • 2012-07-28
    • 2016-08-16
    • 2016-02-27
    相关资源
    最近更新 更多