从当前位置到POI Android Maps V2的方向



我在这里读了很多线程,但是我无法解决问题。

我构建了一个简单的应用程序,显示了许多POI,信息视图,并且我能够绘制一个polyline并在地图中正确具有步行路线,并设置两个LNG点。

现在,我正在尝试添加起点作为用户当前位置的功能。如果我使用map.setMylocationEnabled(true);它显示了我位置的蓝点,我使用了" getMylocation()。getLatitude();";和" getMylocation()。getLongitude();";进行正确坐标的方法。但是,当我运行应用程序时,它会出现nullpoint错误崩溃。

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

编辑了主剖间类

这是我的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);

    }
}

我建议您将与map.getMyLocation()相关的代码部分放在OnMyLocationChangeListener中。获得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);
        }
    });

我弄清楚了我在问什么。这是代码的片段,可以添加从当前位置到固定LAT长的路由。

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);
            }
        });

最新更新