同时显示在“图形页面”在当前位置不能标志 [英] Can't mark while showing the current location in 'mapview'

查看:111
本文介绍了同时显示在“图形页面”在当前位置不能标志的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

听到的是我的项目

在我的项目,我显示我的当前位置,显示当前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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆