为什么这样code不能让覆盖项目出现在我的当前位置 [英] Why this code cant make overlay item appear in my current location

查看:130
本文介绍了为什么这样code不能让覆盖项目出现在我的当前位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿,我想添加出现在我的当前位置的图像,这里是我的codeI加覆盖的项目,但我想补充的方法或这样的事情,使叠加的项目出现在我的当前位置,我添加bmp的添加项目在我的位置CURENT请任何一个可以检查出来!!!!所以请为什么不能出现在我的当前位置?为什么尽管他们出现在我输入!!!位置它不能出现在覆盖项目在我的当前位置。

 在此输入code
包tryanabtry.opa;
 进口的java.util.List; 进口android.content.Context;
进口android.content.res.Resources; 进口android.graphics.drawable.Drawable;
 进口android.location.Location;
 进口android.location.LocationListener;
 进口android.location.LocationManager;
进口android.os.Bundle;
  进口android.os.Handler;
    进口android.util.Log;
     进口android.widget.TextView;
  进口android.widget.Toast;    进口com.google.android.maps.GeoPoint;
   进口com.google.android.maps.MapActivity;
  进口com.google.android.maps.MapController;
   进口com.google.android.maps.MapView;
   进口com.google.android.maps.Overlay;
 进口com.google.android.maps.OverlayItem;
    公共类tryanabtry扩展MapActivity      {
私人MapView类MapView类;
私人MapController MC;    INT错误= 100;
的GeoPoint P,P2,P3,P4;
清单<&叠加GT; mapOverlays;
可绘制可绘制,drawable2,drawable3,drawable4;
HelloItemizedOverlay itemizedOverlay,itemizedOverlay2,itemizedOverlay3,itemizedOverlay4;            / **当第一次创建活动调用。 * /        @覆盖   公共无效的onCreate(捆绑savedInstanceState)  {
   尝试{
     super.onCreate(savedInstanceState);       的setContentView(R.layout.main);
    / *使用的LocationManager类获取GPS位置* /      的LocationManager mlocManager =(的LocationManager)getSystemService(Context.LOCATION_SERVICE);            LocationListener的mlocListener =新MyLocationListener();                mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,mlocListener);
             图形页面=(图形页面)findViewById(R.id.mapView);    //默认启用街景
     mapView.setStreetView(真);
      mapView.setBuiltInZoomControls(真);         MC = mapView.getController();         mc.setZoom(12);
         addOverLays();
                  }
             赶上(例外五){
   Log.d(eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,e.getMessage());
           }            }
          公共无效addOverLays(){
         串[]坐标= {31.216487288475037,29.932637214660645,30.084123015403748,51.5002,-0.1262,31.337149143218994};
             双纬度= 29.98739718380868,LAT2 = 29.98763859272003,lat3 = 29.987574219703674,lat4 = 29.98718498160553;
             双对数= 31.442527770886084,
              LOG2 = 31.44235074520111,
             log3中= 31.44225418567575,LOG4 = 31.442527770996094;   P =新的GeoPoint((INT)(LAT * 1E6),(INT)(日志* 1E6));
    P2 =新的GeoPoint((INT)(LAT2 * 1e6个电子),(INT)(LOG2 * 1e6个电子));
   P3 =新的GeoPoint((INT)(lat3 * 1e6个电子),(INT)(log3中* 1e6个电子));
   P4 =新的GeoPoint((INT)(lat4 * 1e6个电子),(INT)(LOG4 * 1e6个电子));
     mapOverlays =调用MapView.getOverlays();
    绘制= this.getResources()getDrawable(R.drawable.vitblue)。
    drawable2 = this.getResources()getDrawable(R.drawable.ballon)。
   drawable3 = this.getResources()getDrawable(R.drawable.blackaaaaa)。
    drawable4 = this.getResources()getDrawable(R.drawable.vitblue)。   itemizedOverlay =新HelloItemizedOverlay(绘制,这一点);
   itemizedOverlay2 =新HelloItemizedOverlay(drawable2,这一点);
   itemizedOverlay3 =新HelloItemizedOverlay(drawable3,这一点);
   itemizedOverlay4 =新HelloItemizedOverlay(drawable4,这一点);
   OverlayItem overlayitem =新OverlayItem(对,开罗,over1);
   OverlayItem over2 =新OverlayItem(P2,乌尔姆,over2);
   OverlayItem over3 =新OverlayItem(P3,offff,over3);
   OverlayItem over4 =新OverlayItem(P4,offff,over4);  itemizedOverlay.addOverlay(overlayitem);    mapOverlays.add(itemizedOverlay);   itemizedOverlay2.addOverlay(over2);
   mapOverlays.add(itemizedOverlay2);   itemizedOverlay3.addOverlay(over3);
  mapOverlays.add(itemizedOverlay3);  itemizedOverlay4.addOverlay(over4);
mapOverlays.add(itemizedOverlay4);
      mc.setZoom(17);
        mc.animateTo(P4);          }

/ *类我的位置监听器* /

 公共类MyLocationListener实现LocationListener的           {       @覆盖             公共无效onLocationChanged(位置LOC)           {的GeoPoint点=新的GeoPoint((INT)(loc.getLatitude()* 1E6)
        (中间体)(loc.getLongitude()* 1E6));        字符串文本=我目前的位置是:+        Latitud =+ loc.getLatitude()+             Longitud =+ loc.getLongitude();             Toast.makeText(getApplicationContext(),                 文本,               Toast.LENGTH_SHORT).show();
////////////////////////////////////////////////// /////////////////////////////////////////////什么我加
drawable3 = this.getResources()getDrawable(R.drawable.blackaaaaa)。
// itemizedOverlay3 =新HelloItemizedOverlay(drawable3,这一点);
  OverlayItem over3 =新OverlayItem(点,offff,over3);
itemizedOverlay3.addOverlay(over3);
    mapOverlays.add(itemizedOverlay3);
////////////////////////////////////////////////// ////////////////////
//// THE LINE新HELLOITEMIZEDOVERLAY!得到一个错误!任何解决方案              mc.animateTo(点);如果(loc.getLatitude()* 1E6> = p.getLatitudeE6() - 错误和放大器;&安培; loc.getLongitude()* 1E6< p.getLatitudeE6()+误差)
     。调用MapView.getOverlays()删除(itemizedOverlay);
mapView.invalidate();
///////////////////////////////
类MapOverlay扩展覆盖
{
    私人的GeoPoint pointToDraw;    公共无效setPointToDraw(GeoPoint的点){
        pointToDraw =点;
    }公众的GeoPoint getPointToDraw(){
        返回pointToDraw;
    }    @覆盖
    公共布尔平局(帆布帆布,MapView类MapView类,布尔阴影,长时){
        super.draw(画布,MapView类,阴影);        //转换点像素
        点screenPts =新点();
        。MapView.getProjection()在toPixels(pointToDraw,screenPts);        //添加标记
        BMP位图= BitmapFactory.de codeResource(getResources(),R.drawable.red);
        canvas.drawBitmap(BMP,screenPts.x,screenPts.y - 24,NULL); // 24是图像的高度
        返回true;
    }
}                    }
                私人资源getResources(){
// TODO自动生成方法存根
返回null;
                   }
             私人无效DoubletoString(双纬){
// TODO自动生成方法存根            }
             公共无效onProviderDisabled(字符串提供商)              {      Toast.makeText(getApplicationContext(),        全球定位系统已禁用,         Toast.LENGTH_SHORT).show();               }
         公共无效onProviderEnabled(字符串提供商)                 {           Toast.makeText(getApplicationContext(),              GPS功能            Toast.LENGTH_SHORT).show();                  }
                公共无效onStatusChanged(字符串提供商,INT地位,捆绑演员)                      {
                      }                        保护布尔isRouteDisplayed(){
                  返回false;
                          }                      } / *类MyLocationListener结束* /
                     @覆盖
                  保护布尔isRouteDisplayed(){
                // TODO自动生成方法存根
               返回false;
                            }
                               }

/////////////////////////////////////////////// ////////////////////////////////////////

 在此输入code05-08 17:12:06.430:ERROR / AndroidRuntime(1435):未捕获的处理程序:螺纹主力退出,由于未捕获的异常
05-08 17:12:06.430:ERROR / AndroidRuntime 1435:显示java.lang.NullPointerException
05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在tryanabtry.opa.tryanabtry $ MyLocationListener.onLocationChanged(tryanabtry.java:182)
05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在android.location.LocationManager $ ListenerTransport._handleMessage(LocationManager.java:181)
05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在android.location.LocationManager $ ListenerTransport.access $ 000(LocationManager.java:114)
05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在android.location.LocationManager $ ListenerTransport $ 1.handleMessage(LocationManager.java:130)
05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在android.os.Handler.dispatchMessage(Handler.java:99)
05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在android.os.Looper.loop(Looper.java:123)
 05-08 17:12:06.430:ERROR / AndroidRuntime 1435:在android.app.ActivityThread.main(ActivityThread.java:3948)
 05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在java.lang.reflect.Method.invokeNative(本机方法)
 05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在java.lang.reflect.Method.invoke(Method.java:521)
 05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:782)
 05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
  05-08 17:12:06.430:ERROR / AndroidRuntime(1435):在dalvik.system.NativeStart.main(本机方法)


解决方案

嘿,也许你想尝试 HTTPS ://github.com/jgilfelt/android-mapviewballoons 并修改它以显示您的图片。我觉得这个伟大的工程,如果你想显示其他内容的位置。

Hey i want to add an image to appear in my current location and here is my code i added overlay items but i want to add method or something like this to make an overlay item appear in my current location , i added the bmp to add the item in my curent location please can any one check it out !!!! so Please why it cant appear in my current location ?? why it cant appear the overlay item in my current location Despite they appear in the position i enter !!!

enter code here
package tryanabtry.opa;
 import java.util.List;

 import android.content.Context;
import android.content.res.Resources;

 import android.graphics.drawable.Drawable;
 import android.location.Location;
 import android.location.LocationListener;
 import android.location.LocationManager;
import android.os.Bundle;
  import android.os.Handler;
    import android.util.Log;
     import android.widget.TextView;
  import android.widget.Toast;

    import com.google.android.maps.GeoPoint;
   import com.google.android.maps.MapActivity;
  import com.google.android.maps.MapController;
   import com.google.android.maps.MapView;
   import com.google.android.maps.Overlay;
 import com.google.android.maps.OverlayItem;


    public class tryanabtry extends MapActivity

      {
private MapView mapView;
private MapController mc;

    int error=100;
GeoPoint p, p2, p3, p4;
List<Overlay> mapOverlays;
Drawable drawable, drawable2 , drawable3, drawable4;
HelloItemizedOverlay itemizedOverlay, itemizedOverlay2 , itemizedOverlay3,        itemizedOverlay4;

            /** Called when the activity is first created. */

        @Override

   public void onCreate(Bundle savedInstanceState)

  {
   try{
     super.onCreate(savedInstanceState);

       setContentView(R.layout.main);


    /* Use the LocationManager class to obtain GPS locations */

      LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

            LocationListener mlocListener = new MyLocationListener();

                mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
             mapView = (MapView) findViewById(R.id.mapView);

    // enable Street view by default
     mapView.setStreetView(true);


      mapView.setBuiltInZoomControls(true);

         mc = mapView.getController();

         mc.setZoom(12); 
         addOverLays();
                  }
             catch(Exception e){
   Log.d("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",e.getMessage());
           }

            }
          public void addOverLays(){
         String [] coordinates = {"31.216487288475037","29.932637214660645"  ,"30.084123015403748", "51.5002" , "-0.1262","31.337149143218994"};
             double lat = 29.98739718380868,lat2 =  29.98763859272003,lat3=29.987574219703674,lat4=29.98718498160553;
             double log = 31.442527770886084, 
              log2 = 31.44235074520111,
             log3=31.44225418567575,log4=31.442527770996094;

   p = new GeoPoint((int) (lat * 1E6), (int) (log * 1E6));
    p2 = new GeoPoint( (int) (lat2 * 1e6), (int) (log2 * 1e6));
   p3=new GeoPoint( (int) (lat3 * 1e6), (int) (log3 * 1e6));
   p4=new GeoPoint( (int) (lat4 * 1e6), (int) (log4 * 1e6));


     mapOverlays = mapView.getOverlays();
    drawable = this.getResources().getDrawable(R.drawable.vitblue);
    drawable2 = this.getResources().getDrawable(R.drawable.ballon);
   drawable3 = this.getResources().getDrawable(R.drawable.blackaaaaa);
    drawable4 = this.getResources().getDrawable(R.drawable.vitblue);

   itemizedOverlay = new HelloItemizedOverlay(drawable,this);
   itemizedOverlay2 = new HelloItemizedOverlay(drawable2,this);        
   itemizedOverlay3 = new HelloItemizedOverlay(drawable3,this);    
   itemizedOverlay4 = new HelloItemizedOverlay(drawable4,this);    
   OverlayItem overlayitem = new OverlayItem(p, "Cairo", " over1");
   OverlayItem over2 = new OverlayItem(p2, "ulm", "over2");
   OverlayItem over3 = new OverlayItem(p3, "offff", "over3");
   OverlayItem over4 = new OverlayItem(p4, "offff", "over4");

  itemizedOverlay.addOverlay(overlayitem);

    mapOverlays.add(itemizedOverlay);

   itemizedOverlay2.addOverlay(over2);
   mapOverlays.add(itemizedOverlay2);

   itemizedOverlay3.addOverlay(over3);
  mapOverlays.add(itemizedOverlay3);

  itemizedOverlay4.addOverlay(over4);
mapOverlays.add(itemizedOverlay4);
      mc.setZoom(17); 
        mc.animateTo(p4);

          }

/* Class My Location Listener */

        public class MyLocationListener implements LocationListener

           {

       @Override

             public void onLocationChanged(Location loc)

           {





GeoPoint point = new GeoPoint(    (int) (loc.getLatitude() * 1E6), 
        (int) (loc.getLongitude() * 1E6));



        String Text = "My current location is: " +

        "Latitud ="+ loc.getLatitude() +

             "Longitud =" + loc.getLongitude();



             Toast.makeText( getApplicationContext(),

                 Text,

               Toast.LENGTH_SHORT).show();
///////////////////////////////////////////////////////////////////////////////////////////////WHAT I ADDED 
drawable3 = this.getResources().getDrawable(R.drawable.blackaaaaa);
// itemizedOverlay3 = new HelloItemizedOverlay(drawable3,this);
  OverlayItem over3 = new OverlayItem(point, "offff", "over3");
itemizedOverlay3.addOverlay(over3);
    mapOverlays.add(itemizedOverlay3);
//////////////////////////////////////////////////////////////////////
//// THE LINE NEW HELLOITEMIZEDOVERLAY !! GET AN ERROR !! ANY SOLUTION 

              mc.animateTo(point);

if (loc.getLatitude() * 1E6>=p.getLatitudeE6()-error&&loc.getLongitude() * 1E6 < p.getLatitudeE6()+error)
     mapView.getOverlays().remove(itemizedOverlay);
mapView.invalidate();


///////////////////////////////
class MapOverlay extends Overlay
{
    private GeoPoint pointToDraw;

    public void setPointToDraw(GeoPoint point) {
        pointToDraw = point;
    }

public GeoPoint getPointToDraw() {
        return pointToDraw;
    }

    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
        super.draw(canvas, mapView, shadow);                   

        // convert point to pixels
        Point screenPts = new Point();
        mapView.getProjection().toPixels(pointToDraw, screenPts);

        // add marker
        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.red);
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 24, null); // 24 is the height of image        
        return true;
    }
} 

                    }


                private Resources getResources() {
// TODO Auto-generated method stub
return null;
                   }


             private void DoubletoString(double latitude) {
// TODO Auto-generated method stub

            }


             public void onProviderDisabled(String provider)

              {

      Toast.makeText( getApplicationContext(),

        "Gps Disabled",

         Toast.LENGTH_SHORT ).show();

               }


         public void onProviderEnabled(String provider)

                 {

           Toast.makeText( getApplicationContext(),

              "Gps Enabled",

            Toast.LENGTH_SHORT).show();

                  }


                public void onStatusChanged(String provider, int status, Bundle extras)

                      {


                      }

                        protected boolean isRouteDisplayed() {
                  return false;
                          }

                      }/* End of Class MyLocationListener */


                     @Override
                  protected boolean isRouteDisplayed() {
                // TODO Auto-generated method stub
               return false;
                            }


                               }

///////////////////////////////////////////////////////////////////////////////////////

enter code here

05-08 17:12:06.430: ERROR/AndroidRuntime(1435): Uncaught handler: thread main exiting    due to uncaught exception
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): java.lang.NullPointerException
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at   tryanabtry.opa.tryanabtry$MyLocationListener.onLocationChanged(tryanabtry.java:182)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:181)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:114)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:130)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at android.os.Looper.loop(Looper.java:123)
 05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at android.app.ActivityThread.main(ActivityThread.java:3948)
 05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at java.lang.reflect.Method.invokeNative(Native Method)
 05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at java.lang.reflect.Method.invoke(Method.java:521)
 05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
 05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
  05-08 17:12:06.430: ERROR/AndroidRuntime(1435):     at dalvik.system.NativeStart.main(Native Method)

解决方案

Hey maybe you want to try that https://github.com/jgilfelt/android-mapviewballoons and modify it to show your images. I think this works great if you want to show additional content to a location.

这篇关于为什么这样code不能让覆盖项目出现在我的当前位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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