【问题标题】:Directions from current location to poi android maps v2从当前位置到 poi android maps v2 的路线
【发布时间】:2015-05-13 13:30:33
【问题描述】:

我在这里阅读了很多帖子,但我无法解决我的问题。

我构建了一个简单的应用程序,它显示了许多 poi、信息视图,并且我能够绘制一条折线并在地图中正确显示步行方向,设置两个 Lat Lng 点。

现在我正在尝试添加 START POINT 作为用户当前位置的功能。如果我使用 map.setMyLocationEnabled(true);它显示了我位置的蓝光点,我使用了“getMyLocation().getLatitude();”和“getMyLocation().getLongitude();”获取正确坐标的方法。但是当我运行我的应用程序时,它会因 NullPoint 错误而崩溃。

编辑:我解决了我的问题,我用解决方案编辑了 MainAcrivity 类

这是我的 MainActivity.java

    package com.directions.android;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

import com.directions.route.Route;
import com.directions.route.Routing;
import com.directions.route.RoutingListener;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.PolylineOptions;

public class MyActivity extends FragmentActivity implements RoutingListener {
    protected GoogleMap map;
    protected LatLng start;
    protected LatLng end;
    protected Double myPosLat;
    protected double myPosLng;
    /**
     * This activity loads a map and then displays the route and pushpins on it.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        map = fm.getMap();

        CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(47.3369217,9.353883));
        CameraUpdate zoom = CameraUpdateFactory.zoomTo(16);

        map.moveCamera(center);
        map.animateCamera(zoom);
        map.setMyLocationEnabled(true);


    map.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
        @Override
        public void onMyLocationChange(Location location) {
            map.addMarker(new MarkerOptions().position(new LatLng(
                    location.getLatitude(), location.getLongitude())).title("You are here!"));

            start = new LatLng(location.getLatitude(), location.getLongitude());
            end = new LatLng(44.48861858, 11.36779726);

            Routing routing = new Routing(Routing.TravelMode.WALKING);
            routing.registerListener(MyActivity.this);
            routing.execute(start, end);
        }
    });




    }


    @Override
    public void onRoutingFailure() {
        // The Routing request failed
    }

    @Override
    public void onRoutingStart() {
        // The Routing Request starts
    }

    @Override
    public void onRoutingSuccess(PolylineOptions mPolyOptions, Route route) {
        PolylineOptions polyOptions = new PolylineOptions();
        polyOptions.color(Color.RED);
        polyOptions.width(8);
        polyOptions.addAll(mPolyOptions.getPoints());
        map.addPolyline(polyOptions);

        // Start marker
        MarkerOptions options = new MarkerOptions();
        options.position(start);
        options.icon(BitmapDescriptorFactory.fromResource(R.drawable.start_blue));
        map.addMarker(options);

        // End marker
        options = new MarkerOptions();
        options.position(end);
        options.icon(BitmapDescriptorFactory.fromResource(R.drawable.end_green));
        map.addMarker(options);


    }

}

【问题讨论】:

  • 请发布您的 LogCat 日志。
  • 没有 logcat 我们无法预测您的问题:(

标签: java android google-maps


【解决方案1】:

我建议您将与map.getMyLocation() 相关的部分代码放在OnMyLocationChangeListener 中。在 Android 上获取MyLocation 需要时间。

map.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
        @Override
        public void onMyLocationChange(Location location) {

            myPosLat = location.getLatitude();
            myPosLng = location.getLongitude();

            start = new LatLng(myPosLat, myPosLng);
            end = new LatLng(48.823515, 10.1246599);

            Routing routing = new Routing(Routing.TravelMode.WALKING);
            routing.registerListener(this);
            routing.execute(start, end);

        }
    });

【讨论】:

    【解决方案2】:

    我知道我在问什么。这是添加从当前位置到固定纬度经度的路线的代码的 sn-p。

    map.setMyLocationEnabled(true);
    
    
            map.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
                @Override
                public void onMyLocationChange(Location location) {
                    map.addMarker(new MarkerOptions().position(new LatLng(
                            location.getLatitude(), location.getLongitude())).title("You are here!"));
    
                    start = new LatLng(location.getLatitude(), location.getLongitude());
                    end = new LatLng(44.48861858, 11.36779726);
    
                    Routing routing = new Routing(Routing.TravelMode.WALKING);
                    routing.registerListener(MyActivity.this);
                    routing.execute(start, end);
                }
            });
    

    【讨论】:

      猜你喜欢
      • 2013-12-18
      • 2013-08-27
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多