同时显示在“图形页面”在当前位置不能标志 [英] Can't mark while showing the current location in 'mapview'
本文介绍了同时显示在“图形页面”在当前位置不能标志的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
听到的是我的项目
在我的项目,我显示我的当前位置,显示当前LAT-long.But我不能 以纪念我的android的当前位置。
日Thnx提前。
@覆盖
公共无效onLocationChanged(位置定位){
// TODO自动生成方法存根
Log.d(TAG,onLocationChanged与位置+ location.toString());
//显示经纬度,长,高度和轴承
字符串文本=的String.Format(纬度:\ t%F \ nLong:\ t%F \ NALT:\ t%F \ nBearing:\ T%F,location.getLatitude(),location.getLongitude(),位置.getAltitude(),location.getBearing());
this.locationText.setText(文本);
尝试 {
//这个获得地址的列表
名单<地址>地址=地理coder.getFromLocation(location.getLatitude()
location.getLongitude(),10);
对于(地址地址:地址){
this.locationText.append(\ N+考希克);
}
//将经纬度转换成int的GeoPoint对象构造可以理解
INT纬度=(INT)(location.getLatitude()* 1000000);
INT经度=(INT)(location.getLongitude()* 1000000);
点=新的GeoPoint(纬度,经度);
mapController.animateTo(点);
mapController.setZoom(16);
MapOverlay mapOverLay =新MapOverlay();
mapOverLay.setPointToDraw(点);
名单<覆盖> listOfOverlays = map.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverLay);
map.invalidate();
}赶上(IOException异常E){
Log.e(LocateMe,无法获得地理codeR数据,E);
}
}
解决方案
mapController.animateTo(点);
mapController.setZoom(16);
MapOverlay mapOverLay =新MapOverlay();
mapOverLay.setPointToDraw(点);
名单<覆盖> listOfOverlays = map.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverLay);
替换为以下行//其中,土地增值税和长从GPS取上面的纹路。
绘制对象srcdrawable = getApplicationContext()getResources()getDrawable(R.drawable.pin_blue)。
CustomItemizedOverlay srcitemizedOverlay =新CustomItemizedOverlay(srcdrawable,getApplicationContext());
的GeoPoint srcpoint =新的GeoPoint((INT)(Double.parseDouble(LAT)* 1E6),(INT)(Double.parseDouble(LNG)* 1E6));
OverlayItem srcoverlayitem =新OverlayItem(srcpoint,你好!,这是你的位置。);
srcitemizedOverlay.addOverlay(srcoverlayitem);
调用MapView.getOverlays()清()。
。调用MapView.getOverlays()加(srcitemizedOverlay);
mapController.animateTo(srcpoint);
mapController.setZoom(16);
//如果你想要一个以上的点在地图上 / *
绘制对象srcdrawable = getApplicationContext()getResources()getDrawable(R.drawable.pin_blue)。
CustomItemizedOverlay srcitemizedOverlay =新CustomItemizedOverlay(srcdrawable,getApplicationContext());
forloop(setoflocations){
的GeoPoint srcpoint =新的GeoPoint((INT)(Double.parseDouble(LAT)* 1E6),(INT)(Double.parseDouble(LNG)* 1E6));
OverlayItem srcoverlayitem =新OverlayItem(srcpoint,你好!,这是你的位置。);
如果(srcitemizedOverlay = NULL和放大器;!&安培;!mapController = NULL){
srcitemizedOverlay.addOverlay(overlayitem);
mapController.animateTo(点);
animatePoint =点;
}
}
调用MapView.getOverlays()清()。
。调用MapView.getOverlays()加(srcitemizedOverlay);
* /
也可以使用下面的CustomItemizedOverlay.java类
公共类CustomItemizedOverlay扩展ItemizedOverlay< OverlayItem> {
私人最终的ArrayList< OverlayItem> mapOverlays =新的ArrayList< OverlayItem>();
私人上下文的背景下;
公共CustomItemizedOverlay(可绘制defaultMarker){
超(boundCenterBottom(defaultMarker));
}
公共CustomItemizedOverlay(可绘制defaultMarker,上下文语境){
这个(defaultMarker);
this.context =背景;
}
@覆盖
保护OverlayItem createItem中(int i)以{
返回mapOverlays.get(ⅰ);
}
@覆盖
公众诠释大小(){
返回mapOverlays.size();
}
公共无效addOverlay(OverlayItem叠加){
mapOverlays.add(叠加);
this.populate();
}
}
Hear is my project
In my project I am showing my current location,showing the current lat-long.But I'm not able to mark my current position in android.
Thnx in advance.
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
Log.d(TAG, "onLocationChanged with location " + location.toString());
// Displays lat, long, altitude and bearing
String text = String.format("Lat:\t %f\nLong:\t %f\nAlt:\t %f\nBearing:\t %f", location.getLatitude(), location.getLongitude(), location.getAltitude(), location.getBearing());
this.locationText.setText(text);
try {
// This gets a list of addresses
List<Address> addresses = geocoder.getFromLocation(location.getLatitude(),
location.getLongitude(), 10);
for (Address address : addresses) {
this.locationText.append("\n" + "kaushik");
}
// Convert latitude and longitude into int that the GeoPoint constructor can understand
int latitude = (int)(location.getLatitude() * 1000000);
int longitude = (int)(location.getLongitude() * 1000000);
point = new GeoPoint(latitude,longitude);
mapController.animateTo(point);
mapController.setZoom(16);
MapOverlay mapOverLay=new MapOverlay();
mapOverLay.setPointToDraw(point);
List<Overlay> listOfOverlays=map.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverLay);
map.invalidate();
} catch (IOException e) {
Log.e("LocateMe", "Could not get Geocoder data", e);
}
}
解决方案
mapController.animateTo(point);
mapController.setZoom(16);
MapOverlay mapOverLay=new MapOverlay();
mapOverLay.setPointToDraw(point);
List<Overlay> listOfOverlays=map.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverLay);
Replace the above lines with below lines//where lat and long are fetched from gps.
Drawable srcdrawable = getApplicationContext().getResources().getDrawable(R.drawable.pin_blue);
CustomItemizedOverlay srcitemizedOverlay = new CustomItemizedOverlay(srcdrawable, getApplicationContext());
GeoPoint srcpoint = new GeoPoint((int)( Double.parseDouble(lat) * 1E6),(int)( Double.parseDouble(lng)* 1E6));
OverlayItem srcoverlayitem = new OverlayItem(srcpoint, "Hello!", "This is your Location.");
srcitemizedOverlay.addOverlay(srcoverlayitem);
mapView.getOverlays().clear();
mapView.getOverlays().add(srcitemizedOverlay);
mapController.animateTo(srcpoint);
mapController.setZoom(16);
//If you want more than one point on map /*
Drawable srcdrawable = getApplicationContext().getResources().getDrawable(R.drawable.pin_blue);
CustomItemizedOverlay srcitemizedOverlay = new CustomItemizedOverlay(srcdrawable, getApplicationContext());
forloop(setoflocations){
GeoPoint srcpoint = new GeoPoint((int)( Double.parseDouble(lat) * 1E6),(int)( Double.parseDouble(lng)* 1E6));
OverlayItem srcoverlayitem = new OverlayItem(srcpoint, "Hello!", "This is your Location.");
if(srcitemizedOverlay!=null && mapController!=null){
srcitemizedOverlay.addOverlay(overlayitem);
mapController.animateTo(point);
animatePoint = point;
}
}
mapView.getOverlays().clear();
mapView.getOverlays().add(srcitemizedOverlay);
*/
also use the below CustomItemizedOverlay.java class
public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private final ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();
private Context context;
public CustomItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
public CustomItemizedOverlay(Drawable defaultMarker, Context context) {
this(defaultMarker);
this.context = context;
}
@Override
protected OverlayItem createItem(int i) {
return mapOverlays.get(i);
}
@Override
public int size() {
return mapOverlays.size();
}
public void addOverlay(OverlayItem overlay) {
mapOverlays.add(overlay);
this.populate();
}
}
这篇关于同时显示在“图形页面”在当前位置不能标志的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文