获取百度地图 只显示当前定位

package com.example.mapdemo;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Toast;


import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;


public class MainActivity extends Activity
{
//private MapView mMapView;
// private BaiduMap mBaiduMap;


private Context context;


// 定位相关
private LocationClient mLocationClient;
private MyLocationListener mLocationListener;
private boolean isFirstIn = true;
private double mLatitude;
private double mLongtitude;
  
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// requestWindowFeature(Window.FEATURE_NO_TITLE);
// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
// 注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);


this.context = this;


initView();
// 初始化定位
initLocation();
// initMarker();


 
 
}


 


private void initLocation()
{


mLocationClient = new LocationClient(this);
mLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(mLocationListener);


LocationClientOption option = new LocationClientOption();
option.setCoorType("bd09ll");
option.setIsNeedAddress(true);
option.setOpenGps(true);
option.setScanSpan(1000);
mLocationClient.setLocOption(option);
 


}


  private void initView()
{
// mMapView = (MapView) findViewById(R.id.id_bmapView);
//  mBaiduMap = mMapView.getMap();
 



@Override
protected void onResume()
{
super.onResume();
// 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
// mMapView.onResume();
}


@Override
protected void onStart()
{
super.onStart();
// 开启定位
// mBaiduMap.setMyLocationEnabled(true);
if (!mLocationClient.isStarted())
mLocationClient.start();
// 开启方向传感器
// myOrientationListener.start();
}


@Override
protected void onPause()
{
super.onPause();
// 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
// mMapView.onPause();
}


@Override
protected void onStop()
{
super.onStop();


// 停止定位
// mBaiduMap.setMyLocationEnabled(false);
mLocationClient.stop();
// 停止方向传感器
// myOrientationListener.stop();


}


@Override
protected void onDestroy()
{
super.onDestroy();
// 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
// mMapView.onDestroy();
}


@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


/*@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.id_map_common:
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
break;


case R.id.id_map_site:
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
break;


case R.id.id_map_traffic:
if (mBaiduMap.isTrafficEnabled())
{
mBaiduMap.setTrafficEnabled(false);
item.setTitle("实时交通(off)");
} else
{
mBaiduMap.setTrafficEnabled(true);
item.setTitle("实时交通(on)");
}
break;
case R.id.id_map_location:
centerToMyLocation();
break;
case R.id.id_map_mode_common:
mLocationMode = LocationMode.NORMAL;
break;
case R.id.id_map_mode_following:
mLocationMode = LocationMode.FOLLOWING;
break;
case R.id.id_map_mode_compass:
mLocationMode = LocationMode.COMPASS;
break;
case R.id.id_add_overlay:
addOverlays(Info.infos);
break;
default:
break;
}


return super.onOptionsItemSelected(item);
}*/


/**
* 添加覆盖物

* @param infos
*/
/* private void addOverlays(List<Info> infos)
{
mBaiduMap.clear();
LatLng latLng = null;
Marker marker = null;
OverlayOptions options;
for (Info info : infos)
{
// 经纬度
latLng = new LatLng(info.getLatitude(), info.getLongitude());
// 图标
options = new MarkerOptions().position(latLng).icon(mMarker)
.zIndex(5);
marker = (Marker) mBaiduMap.addOverlay(options);
Bundle arg0 = new Bundle();
arg0.putSerializable("info", info);
marker.setExtraInfo(arg0);
}


MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
mBaiduMap.setMapStatus(msu);


}*/


/**
* 定位到我的位置
*/
/* private void centerToMyLocation()
{
LatLng latLng = new LatLng(mLatitude, mLongtitude);
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
mBaiduMap.animateMapStatus(msu);
}
*/
private class MyLocationListener implements BDLocationListener
{
@Override
public void onReceiveLocation(BDLocation location)
{


/*MyLocationData data = new MyLocationData.Builder()//
//.direction(mCurrentX)//
.accuracy(location.getRadius())//
.latitude(location.getLatitude())//
.longitude(location.getLongitude())//
.build();*/
// mBaiduMap.setMyLocationData(data);
// 设置自定义图标
/* MyLocationConfiguration config = new MyLocationConfiguration(
mLocationMode, true, mIconLocation);*/
// mBaiduMap.setMyLocationConfigeration(config);


// 更新经纬度
mLatitude = location.getLatitude();
mLongtitude = location.getLongitude();


if (isFirstIn)
{
LatLng latLng = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
// mBaiduMap.animateMapStatus(msu);
isFirstIn = false;


Toast.makeText(context, location.getAddrStr(),
Toast.LENGTH_SHORT).show();
}


}
}


}
要实现获取当前定位并在百度地图显示出来,可以按照以下步骤进行操作: 1. 首先,在HTML文件中引入百度地图API和相关的JavaScript文件。可以使用如下代码: ```html <script src="http://api.map.baidu.com/api?v=2.0&ak=你的百度地图API密钥"></script> ``` 其中,需要将"你的百度地图API密钥"替换为自己申请的百度地图API密钥。 2. 创建地图容器。在HTML文件中添加一个具有唯一ID的元素作为地图容器,例如: ```html <div id="map"></div> ``` 3. 使用JavaScript编写获取当前位置的代码,并在地图显示出来。可以使用Geolocation API获取当前位置,然后将经纬度传给百度地图API进行标注。以下是示例代码: ```javascript // 获取当前位置 navigator.geolocation.getCurrentPosition(function(position) { var latitude = position.coords.latitude; // 纬度 var longitude = position.coords.longitude; // 经度 // 创建地图实例 var map = new BMap.Map("map"); // 创建点坐标 var point = new BMap.Point(longitude, latitude); // 在地图上标注当前位置 var marker = new BMap.Marker(point); map.addOverlay(marker); // 设置地图中心点和缩放级别 map.centerAndZoom(point, 15); }); ``` 4. 最后,在CSS文件中设置地图容器的宽度和高度,例如: ```css #map { width: 600px; height: 400px; } ``` 通过以上步骤,就能够获取当前定位并在百度地图显示出来。可以在网页中测试该代码,看到地图会自动显示当前位置的标注。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值