Overlay problem

Put problem concerning MapActivities, MapViews, Overlays and GPS in this forum.

Overlay problem

Postby SamB09 » Mon Feb 15, 2010 5:43 pm

I've added an overlay image to maps. Now i need to add a user location overlay on top of it (the first overlay is a music festival site overlayed with stage locations ect) I cant figure out how to add the user location to the first overlay . Currently when i stasrt the user location class it just gets the user location but the first map overlay dissapears from the map.

This class gets the users location and puts there poistion on the map.

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. public class userLocation extends MapActivity implements LocationListener {
  3.  
  4.         /** Called when the activity is first created. */
  5.  
  6.        
  7.  
  8.         EditText                txted                   = null;
  9.  
  10.        
  11.  
  12.         Button                  btnSimple               = null;
  13.  
  14.        
  15.  
  16.         MapView                 myMapView               = null;
  17.  
  18.        
  19.  
  20.         MapController   mc                              = null;
  21.  
  22.        
  23.  
  24.         Drawable                defaultMarker   = null;
  25.  
  26.        
  27.  
  28.         GeoPoint                p                               = null;
  29.  
  30.     //String coordinates[] = {"51.150", "-2.592"};
  31.  
  32.  
  33.  
  34.         double                  latitude                = 51.150, longitude = -2.592;
  35.  
  36.        
  37.  
  38.         @Override
  39.  
  40.         public void onCreate(Bundle savedInstanceState) {
  41.  
  42.                 super.onCreate(savedInstanceState);
  43.  
  44.                 setContentView(R.layout.main);
  45.  
  46.                
  47.  
  48.                 // Creating TextBox displying Lat, Long
  49.  
  50.                 //String currentLocation = "Lat: " + latitude + " Lng: " + longitude;
  51.  
  52.                 //txted.setText(currentLocation);
  53.  
  54.                
  55.  
  56.                 // Creating and initializing Map
  57.  
  58.                 myMapView = (MapView) findViewById(R.id.mapView);
  59.  
  60.                 p = new GeoPoint((int) (latitude * 1000000), (int) (longitude * 1000000));
  61.  
  62.                 myMapView.setSatellite(true);
  63.  
  64.                 mc = myMapView.getController();
  65.  
  66.                 mc.setCenter(p);
  67.  
  68.                 mc.setZoom(14);
  69.  
  70.                
  71.  
  72.                 // Add a location mark
  73.  
  74.                 MyLocationOverlay myLocationOverlay = new MyLocationOverlay();
  75.  
  76.                 List<Overlay> list = myMapView.getOverlays();
  77.  
  78.                 list.add(myLocationOverlay);
  79.  
  80.        
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.                 // Adding zoom controls to Map
  89.  
  90.                 ZoomControls zoomControls = (ZoomControls) myMapView.getZoomControls();
  91.  
  92.                 zoomControls.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,
  93.  
  94.                                 LayoutParams.WRAP_CONTENT));
  95.  
  96.                
  97.  
  98.                 myMapView.addView(zoomControls);
  99.  
  100.                 myMapView.displayZoomControls(true);
  101.  
  102.                
  103.  
  104.                 // Getting locationManager and reflecting changes over map if distance travel by
  105.  
  106.                 // user is greater than 500m from current location.
  107.  
  108.                 LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  109.  
  110.                 lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, this);
  111.  
  112.         }
  113.  
  114.        
  115.  
  116.         /* This method is called when use position will get changed */
  117.  
  118.         public void onLocationChanged(Location location) {
  119.  
  120.                 if (location != null) {
  121.  
  122.                         double latitude = location.getLatitude();
  123.  
  124.                         double longitude = location.getLongitude();
  125.  
  126.                         //String currentLocation = "Lat: " + lat + " Lng: " + lng;
  127.  
  128.                 //      txted.setText(currentLocation);
  129.  
  130.                         p = new GeoPoint((int) latitude * 1000000, (int) longitude * 1000000);
  131.  
  132.                         mc.animateTo(p);
  133.  
  134.                 }
  135.  
  136.         }
  137.  
  138.        
  139.  
  140.         public void onProviderDisabled(String provider) {
  141.  
  142.                 // required for interface, not used
  143.  
  144.         }
  145.  
  146.        
  147.  
  148.         public void onProviderEnabled(String provider) {
  149.  
  150.                 // required for interface, not used
  151.  
  152.         }
  153.  
  154.        
  155.  
  156.         public void onStatusChanged(String provider, int status, Bundle extras) {
  157.  
  158.                 // required for interface, not used
  159.  
  160.         }
  161.  
  162.        
  163.  
  164.         protected boolean isRouteDisplayed() {
  165.  
  166.                 // TODO Auto-generated method stub
  167.  
  168.                 return false;
  169.  
  170.         }
  171.  
  172.  
  173.  
  174.                 //zoom in and out
  175.  
  176.        
  177.  
  178.                   class MyLocationOverlay extends com.google.android.maps.Overlay {
  179.  
  180.                
  181.  
  182.  
  183.  
  184.                 @Override
  185.  
  186.                 public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
  187.  
  188.  
  189.  
  190.                 super.draw(canvas, mapView, shadow);
  191.  
  192.                 Paint paint = new Paint();
  193.  
  194.                 // Converts lat/lng-Point to OUR coordinates on the screen.
  195.  
  196.                 Point myScreenCoords = new Point();
  197.  
  198.                 mapView.getProjection().toPixels(p, myScreenCoords);
  199.  
  200.                 paint.setStrokeWidth(1);
  201.  
  202.                 paint.setARGB(255, 255, 255, 255);
  203.  
  204.                 paint.setStyle(Paint.Style.STROKE);
  205.  
  206.                 //canvas.drawBitmap(myScreenCoords.x, myScreenCoords.y, paint);
  207.  
  208.                 canvas.drawText("Here I am...", myScreenCoords.x, myScreenCoords.y, paint);
  209.  
  210.                 return true;
  211.  
  212.  
  213.  
  214.                 } }
  215.  
  216.        
  217.  
  218.  
  219.  
  220. }
  221.  
  222.  
Parsed in 0.042 seconds, using GeSHi 1.0.8.4

This class draws my festival site overlay onto the map
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. public class map extends MapActivity {
  3.  
  4.         private MapView myMap;
  5.  
  6.        
  7.  
  8.         MapView                 gMapView                = null;
  9.  
  10.  
  11.  
  12.         private MyLocationOverlay myLocOverlay;
  13.  
  14.     /** Called when the activity is first created. */
  15.  
  16.     @Override
  17.  
  18.     public void onCreate(Bundle savedInstanceState) {
  19.  
  20.         super.onCreate(savedInstanceState);
  21.  
  22.         setContentView(R.layout.main);
  23.  
  24.        
  25.  
  26.        
  27.  
  28.         Drawable drawable = this.getResources().getDrawable(R.drawable.icon);
  29.  
  30.  
  31.  
  32.        
  33.  
  34.         String coordinates[] = {"51.150", "-2.592"};
  35.  
  36.        
  37.  
  38.         double lat = Double.parseDouble(coordinates[0]);
  39.  
  40.         double lng = Double.parseDouble(coordinates[1]);
  41.  
  42.      GeoPoint   p = new GeoPoint(
  43.  
  44.             (int) (lat * 1E6),
  45.  
  46.             (int) (lng * 1E6));
  47.  
  48.  
  49.  
  50.  
  51.  
  52.          MapView map = (MapView) findViewById(R.id.mapView);  
  53.  
  54.              MapController mc = map.getController();
  55.  
  56.              mc.animateTo(p);
  57.  
  58.              mc.setZoom(14);
  59.  
  60.              map.setBuiltInZoomControls(true);
  61.  
  62.        
  63.  
  64.              List<Overlay> overlays = map.getOverlays();  
  65.  
  66.              overlays.add(new MyOverlay(this,p, R.drawable.icon));
  67.  
  68.              
  69.  
  70.          
  71.  
  72.              
  73.  
  74.              
  75.  
  76.  
  77.  
  78.              map.invalidate();
  79.  
  80.            
  81.  
  82.              
  83.  
  84.            
  85.  
  86.  
  87.  
  88.        
  89.  
  90.     }
  91.  
  92.         @Override
  93.  
  94.         protected boolean isRouteDisplayed() {
  95.  
  96.                 // TODO Auto-generated method stub
  97.  
  98.                 return false;
  99.  
  100.         }
  101.  
  102.        
  103.  
  104.         private  void Menu (MenuItem     MyLocation
  105.  
  106. ){
  107.  
  108.                
  109.  
  110.         MyLocation = (MenuItem)findViewById(R.id.menu_ok);
  111.  
  112.                                
  113.  
  114.         OnMenuItemClickListener menuItemClickListener = null;
  115.  
  116.         MyLocation.setOnMenuItemClickListener(menuItemClickListener) ;
  117.  
  118.  
  119.  
  120.                 }
  121.  
  122.  
  123.  
  124.  
  125.  
  126.                
  127.  
  128.        
  129.  
  130.                
  131.  
  132.         public boolean onOptionsItemSelected(MenuItem item) {
  133.  
  134.             switch (item.getItemId()) {
  135.  
  136.                 case R.id.menu_ok:    
  137.  
  138.                        
  139.  
  140.                         Intent intent = new Intent(map.this, userLocation.class);
  141.  
  142.                     startActivity(intent);
  143.  
  144.                
  145.  
  146.                                
  147.  
  148.                                        
  149.  
  150.                         Toast.makeText(this, "You pressed the icon!", Toast.LENGTH_LONG).show();
  151.  
  152.                                     break;
  153.  
  154.             }
  155.  
  156.         return true;
  157.  
  158.         }
  159.  
  160.                
  161.  
  162.        
  163.  
  164.        
  165.  
  166.  
  167.  
  168.         @Override
  169.  
  170.         public boolean onCreateOptionsMenu(Menu menu) {
  171.  
  172.                 // TODO Auto-generated method stub
  173.  
  174.                   MenuInflater myMenuInflater = getMenuInflater();
  175.  
  176.                   myMenuInflater.inflate(R.layout.menu, menu);
  177.  
  178.  
  179.  
  180.                      return true;
  181.  
  182.         }
  183.  
  184.        
  185.  
  186.  
  187.  
  188. }  
Parsed in 0.039 seconds, using GeSHi 1.0.8.4
SamB09
Developer
Developer
 
Posts: 39
Joined: Tue Oct 27, 2009 9:22 pm
Location: England

Top

Return to Map Problems

Who is online

Users browsing this forum: No registered users and 3 guests