高德地图搜素附近

private MapView mapView;
private AMap aMap;
private EditText mCityET;
private EditText mSeacherET;
private Button mSeacherBtn;
private RouteSearch routeSearch;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //定义了一个地图view
    mapView = (MapView) findViewById(R.id.map);
    mapView.onCreate(savedInstanceState);// 此方法须覆写,虚拟机需要在很多情况下保存地图绘制的当前状态。
    //初始化地图控制器对象
    if (aMap == null) {
        aMap = mapView.getMap();
    }
    LanDian();
    initRun() ;


}

private void LanDian() {
    MyLocationStyle myLocationStyle;
    myLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。
    myLocationStyle.interval(2000); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
    aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Style
    //aMap.getUiSettings().setMyLocationButtonEnabled(true);设置默认定位按钮是否显示,非必需设置。
    aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。
    myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE);
    myLocationStyle.showMyLocation(true);

}


private void initRun() {

    mCityET = (EditText) findViewById(R.id.mCityET);
    mCityET.setOnClickListener(this);
    mSeacherET = (EditText) findViewById(R.id.mSeacherET);
    mSeacherET.setOnClickListener(this);
    mSeacherBtn = (Button) findViewById(R.id.mSeacherBtn);
    mSeacherBtn.setOnClickListener(this);
    AMap.OnMarkerClickListener onMarkerClickListener = new AMap.OnMarkerClickListener() {

        private RouteSearch routeSearch;

        @Override
        public boolean onMarkerClick(Marker marker) {

            Toast.makeText(MainActivity.this, marker.getTitle() + "--"
                            + marker.getPosition().latitude + ","
                            + marker.getPosition().longitude,
                    Toast.LENGTH_SHORT).show();
            routeSearch = new RouteSearch(MainActivity.this);
            routeSearch.setRouteSearchListener(new RouteSearch.OnRouteSearchListener() {




                @Override
                public void onBusRouteSearched(BusRouteResult busRouteResult, int i) {

                }

                @Override
                public void onDriveRouteSearched(DriveRouteResult result, int errorCode) {
                    aMap.clear();// 清理地图上的所有覆盖物
                    if (errorCode == AMapException.CODE_AMAP_SUCCESS) {
                        if (result != null && result.getPaths() != null) {
                            if (result.getPaths().size() > 0) {
                                final DrivePath drivePath = result.getPaths()
                                        .get(0);
                                DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(
                                        MainActivity.this, aMap, drivePath,
                                        result.getStartPos(),
                                        result.getTargetPos(), null);
                                drivingRouteOverlay.setNodeIconVisibility(false);//设置节点marker是否显示
                                drivingRouteOverlay.setIsColorfulline(true);//是否用颜色展示交通拥堵情况,默认true
                                drivingRouteOverlay.removeFromMap();
                                drivingRouteOverlay.addToMap();
                                drivingRouteOverlay.zoomToSpan();
                            } else if (result != null && result.getPaths() == null) {
                                ToastUtil.show(MainActivity.this, R.string.no_result);
                            }

                        } else {
                            ToastUtil.show(MainActivity.this, R.string.no_result);
                        }
                    } else {
                        ToastUtil.showerror(MainActivity.this, errorCode);
                    }
                }

                @Override
                public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) {

                }

                @Override
                public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {

                }
            });
            Location myLocation = aMap.getMyLocation();
            double latitude = myLocation.getLatitude();
            double longitude = myLocation.getLongitude();
            LatLng position = marker.getPosition();
            double latitude1 = position.latitude;
            double longitude1 = position.longitude;
            LatLonPoint point = new LatLonPoint(latitude, longitude);
            LatLonPoint point1 = new LatLonPoint(latitude1, longitude1);
            RouteSearch.FromAndTo fat = new RouteSearch.FromAndTo(point, point1);
            RouteSearch.DriveRouteQuery query = new RouteSearch.DriveRouteQuery(fat, RouteSearch.DRIVING_MULTI_STRATEGY_FASTEST_SHORTEST_AVOID_CONGESTION, null, null, "");
            routeSearch.calculateDriveRouteAsyn(query);

            return false;
        }
    };
    aMap.setOnMarkerClickListener(onMarkerClickListener);




}

@Override
protected void onDestroy() {
    super.onDestroy();
    //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
    mapView.onDestroy();
}

@Override
protected void onResume() {
    super.onResume();
    //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
    mapView.onResume();
}

@Override
protected void onPause() {
    super.onPause();
    //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
    mapView.onPause();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
    mapView.onSaveInstanceState(outState);
}

@Override
public void onClick(View view) {
    switch (view    .getId()) {
        case R.id.mSeacherBtn:
            submit();
            break;
    }
}

private void submit() {
    // validate
    String mCityETString = mCityET.getText().toString().trim();
    if (TextUtils.isEmpty(mCityETString)) {
        Toast.makeText(this, "mCityETString不能为空", Toast.LENGTH_SHORT).show();
        return;
    }

    String mSeacherETString = mSeacherET.getText().toString().trim();
    if (TextUtils.isEmpty(mSeacherETString)) {
        Toast.makeText(this, "mSeacherETString不能为空", Toast.LENGTH_SHORT).show();
        return;
    }

    // TODO validate success, do something

    PoiSearch.Query query = new PoiSearch.Query(mSeacherETString,"",mCityETString);
    query.setPageSize(10);
    query.setPageNum(1);
    PoiSearch search = new PoiSearch(this,query);

    search.setOnPoiSearchListener(new PoiSearch.OnPoiSearchListener() {
        @Override
        public void onPoiSearched(PoiResult poiResult, int i) {
            ArrayList<PoiItem> pois = poiResult.getPois();
            for (PoiItem item:pois){
                Log.e("TAG",item.getTitle()+"\n"+item.getCityName()+"\n"+item.getAdName()+"\n"+item.getSnippet());
                LatLonPoint latLonPoint = item.getLatLonPoint();
                LatLng latLng = new LatLng(latLonPoint.getLatitude(),latLonPoint.getLongitude());
                final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title(item.getTitle()).snippet(item.getSnippet()));
            }
        }

        @Override
        public void onPoiItemSearched(PoiItem poiItem, int i) {

        }
    });
    search.searchPOIAsyn();
}
//xml文件
<LinearLayout
    android:weightSum="10"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="50dp">
    <EditText
        android:id="@+id/mCityET"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="match_parent" />
    <EditText
        android:id="@+id/mSeacherET"
        android:layout_width="0dp"
        android:layout_weight="6"
        android:layout_height="match_parent" />
    <Button
        android:text="搜索"
        android:id="@+id/mSeacherBtn"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="match_parent" />

</LinearLayout>

<com.amap.api.maps.MapView

    android:id="@+id/map"

    android:layout_width="match_parent"

    android:layout_height="match_parent"/>

转载于:https://my.oschina.net/u/3685376/blog/1544226

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值