实例介绍
【实例简介】
android GPS定位源码 地图显示位置源码 有用到的小伙伴自提取
基于高德地图Android API快速搭建用车解决方案的示例【实例截图】
【核心代码】
package apis.amap.com.usingcar; import android.app.Activity; import android.content.Intent; import android.graphics.BitmapFactory; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.amap.api.maps.AMap; import com.amap.api.maps.CameraUpdate; import com.amap.api.maps.CameraUpdateFactory; import com.amap.api.maps.MapView; import com.amap.api.maps.model.BitmapDescriptorFactory; import com.amap.api.maps.model.CameraPosition; import com.amap.api.maps.model.LatLng; import com.amap.api.maps.model.Marker; import com.amap.api.maps.model.MarkerOptions; import apis.amap.com.usingcar.lib.LocationTask; import apis.amap.com.usingcar.lib.OnLocationGetListener; import apis.amap.com.usingcar.lib.PositionEntity; import apis.amap.com.usingcar.lib.RegeocodeTask; import apis.amap.com.usingcar.lib.RouteTask; import apis.amap.com.usingcar.lib.Utils; public class MainActivity extends Activity implements AMap.OnCameraChangeListener, AMap.OnMapLoadedListener, OnLocationGetListener, View.OnClickListener, RouteTask.OnRouteCalculateListener { private MapView mMapView; private AMap mAmap; private TextView mAddressTextView; private Button mDestinationButton; private Marker mPositionMark; private LatLng mStartPosition; private RegeocodeTask mRegeocodeTask; private LinearLayout mDestinationContainer; private TextView mRouteCostText; private TextView mDesitinationText; private LocationTask mLocationTask; private ImageView mLocationImage; private LinearLayout mFromToContainer; private Button mCancelButton; private boolean mIsFirst = true; private boolean mIsRouteSuccess = false; public interface OnGetLocationListener { public void getLocation(String locationAddress); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(savedInstanceState); mLocationTask = LocationTask.getInstance(getApplicationContext()); mLocationTask.setOnLocationGetListener(this); mRegeocodeTask = new RegeocodeTask(getApplicationContext()); RouteTask.getInstance(getApplicationContext()) .addRouteCalculateListener(this); } private void init(Bundle savedInstanceState) { mAddressTextView = (TextView) findViewById(R.id.address_text); mDestinationButton = (Button) findViewById(R.id.destination_button); mDestinationButton.setOnClickListener(this); mMapView = (MapView) findViewById(R.id.map); mMapView.onCreate(savedInstanceState); mAmap = mMapView.getMap(); mAmap.getUiSettings().setZoomControlsEnabled(false); mAmap.setOnMapLoadedListener(this); mAmap.setOnCameraChangeListener(this); mDestinationContainer = (LinearLayout) findViewById(R.id.destination_container); mRouteCostText = (TextView) findViewById(R.id.routecost_text); mDesitinationText = (TextView) findViewById(R.id.destination_text); mDesitinationText.setOnClickListener(this); mLocationImage = (ImageView) findViewById(R.id.location_image); mLocationImage.setOnClickListener(this); mFromToContainer = (LinearLayout) findViewById(R.id.fromto_container); mCancelButton = (Button) findViewById(R.id.cancel_button); } private void hideView() { mFromToContainer.setVisibility(View.GONE); mDestinationButton.setVisibility(View.GONE); mCancelButton.setVisibility(View.GONE); } private void showView() { mFromToContainer.setVisibility(View.VISIBLE); mDestinationButton.setVisibility(View.VISIBLE); if (mIsRouteSuccess) { mCancelButton.setVisibility(View.VISIBLE); } } @Override public void onCameraChange(CameraPosition arg0) { hideView(); } @Override public void onCameraChangeFinish(CameraPosition cameraPosition) { showView(); mStartPosition = cameraPosition.target; mRegeocodeTask.setOnLocationGetListener(this); mRegeocodeTask .search(mStartPosition.latitude, mStartPosition.longitude); if (mIsFirst) { Utils.addEmulateData(mAmap, mStartPosition); if (mPositionMark != null) { mPositionMark.setToTop(); } mIsFirst = false; } } /** * 方法必须重写 */ @Override protected void onResume() { super.onResume(); mMapView.onResume(); } /** * 方法必须重写 */ @Override protected void onPause() { super.onPause(); mMapView.onPause(); } /** * 方法必须重写 */ @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mMapView.onSaveInstanceState(outState); } /** * 方法必须重写 */ @Override protected void onDestroy() { super.onDestroy(); Utils.removeMarkers(); mMapView.onDestroy(); mLocationTask.onDestroy(); RouteTask.getInstance(getApplicationContext()).removeRouteCalculateListener(this); } @Override public void onMapLoaded() { MarkerOptions markerOptions = new MarkerOptions(); markerOptions.setFlat(true); markerOptions.anchor(0.5f, 0.5f); markerOptions.position(new LatLng(0, 0)); markerOptions .icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory .decodeResource(getResources(), R.drawable.icon_loaction_start))); mPositionMark = mAmap.addMarker(markerOptions); mPositionMark.setPositionByPixels(mMapView.getWidth() / 2, mMapView.getHeight() / 2); mLocationTask.startSingleLocate(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.destination_button: Intent intent = new Intent(this, DestinationActivity.class); startActivity(intent); break; case R.id.location_image: mLocationTask.startSingleLocate(); break; case R.id.destination_text: Intent destinationIntent = new Intent(this, DestinationActivity.class); startActivity(destinationIntent); break; } } @Override public void onLocationGet(PositionEntity entity) { // todo 这里在网络定位时可以减少一个逆地理编码 mAddressTextView.setText(entity.address); RouteTask.getInstance(getApplicationContext()).setStartPoint(entity); mStartPosition = new LatLng(entity.latitue, entity.longitude); CameraUpdate cameraUpate = CameraUpdateFactory.newLatLngZoom( mStartPosition, mAmap.getCameraPosition().zoom); mAmap.animateCamera(cameraUpate); } @Override public void onRegecodeGet(PositionEntity entity) { mAddressTextView.setText(entity.address); entity.latitue = mStartPosition.latitude; entity.longitude = mStartPosition.longitude; RouteTask.getInstance(getApplicationContext()).setStartPoint(entity); RouteTask.getInstance(getApplicationContext()).search(); } @Override public void onRouteCalculate(float cost, float distance, int duration) { mDestinationContainer.setVisibility(View.VISIBLE); mIsRouteSuccess = true; mRouteCostText.setVisibility(View.VISIBLE); mDesitinationText.setText(RouteTask .getInstance(getApplicationContext()).getEndPoint().address); mRouteCostText.setText(String.format("预估费用%.2f元,距离%.1fkm,用时%d分", cost, distance, duration)); mDestinationButton.setText("我要用车"); mCancelButton.setVisibility(View.VISIBLE); mDestinationButton.setOnClickListener(null); } }
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论