2013-05-13 49 views
-2

我试图通过以下代码获取我在地图上的位置,但我没有得到实时地图视图.....只有瓷砖网格等...地图视图不可见..请参阅代码和帮助。地图视图在ANDROID - 只显示瓦片。实地图查看不存在

AndroidGPSTrackingActivity.java

package com.androidhive.dashboard; 
import java.util.List; 

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; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 
import androidhive.dashboard.R; 

public class AndroidGPSTrackingActivity extends MapActivity { 

Button btnShowLocation; 
MapView mapView; 

List<Overlay> mapOverlays; 

AddItemizedOverlay itemizedOverlay; 

GeoPoint geoPoint; 
// Map controllers 
MapController mc; 

double latitude; 
double longitude; 
OverlayItem overlayitem; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map_view); 


    GPSTracker gps = new GPSTracker(AndroidGPSTrackingActivity.this); 
    latitude = gps.getLatitude(); 
    longitude = gps.getLongitude(); 
    Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); 


    mapView = (MapView) findViewById(R.id.mapView); 
    mapView.setBuiltInZoomControls(true); 

    mapOverlays = mapView.getOverlays(); 

    // Geopoint to place on map 
    geoPoint = new GeoPoint((int) (latitude * 1E6), 
      (int) (longitude * 1E6)); 

    // Drawable marker icon 
    Drawable drawable_user = this.getResources() 
      .getDrawable(R.drawable.mark_red); 

    itemizedOverlay = new AddItemizedOverlay(drawable_user, this); 

    // Map overlay item 
    overlayitem = new OverlayItem(geoPoint, "Your Location", 
      "That is you!"); 

    itemizedOverlay.addOverlay(overlayitem); 

    mapOverlays.add(itemizedOverlay); 
    itemizedOverlay.populateNow(); 
    mc = mapView.getController(); 
    mc.animateTo(geoPoint); 
    mapView.postInvalidate(); 


     } 

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

} 

$

additemmizedOverlay.java

package com.androidhive.dashboard; 

import java.util.ArrayList; 

import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.graphics.drawable.Drawable; 
import android.view.MotionEvent; 
import android.widget.Toast; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.ItemizedOverlay; 
import com.google.android.maps.MapView; 
import com.google.android.maps.OverlayItem; 

/** 
* Class used to place marker or any overlay items on Map 
* */ 
public class AddItemizedOverlay extends ItemizedOverlay<OverlayItem> { 

    private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>(); 

    private Context context; 

    public AddItemizedOverlay(Drawable defaultMarker) { 
     super(boundCenterBottom(defaultMarker)); 
    } 

    public AddItemizedOverlay(Drawable defaultMarker, Context context) { 
     this(defaultMarker); 
     this.context = context; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event, MapView mapView) 
    { 

     if (event.getAction() == 1) { 
      GeoPoint geopoint = mapView.getProjection().fromPixels(
       (int) event.getX(), 
       (int) event.getY()); 
      // latitude 
      double lat = geopoint.getLatitudeE6()/1E6; 
      // longitude 
      double lon = geopoint.getLongitudeE6()/1E6; 
      Toast.makeText(context, "Lat: " + lat + ", Lon: "+lon, Toast.LENGTH_SHORT).show(); 
     } 
     return false; 
    } 

    @Override 
    protected OverlayItem createItem(int i) { 
     return mapOverlays.get(i); 
    } 

    @Override 
    public int size() { 
     return mapOverlays.size(); 
    } 

    @Override 
    protected boolean onTap(int index) { 
     OverlayItem item = mapOverlays.get(index); 
     AlertDialog.Builder dialog = new AlertDialog.Builder(this.context); 
     dialog.setTitle(item.getTitle()); 
     dialog.setMessage(item.getSnippet()); 
     dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     } 
    }); 
     dialog.show(); 
     return true; 
    } 

    public void addOverlay(OverlayItem overlay) { 
     mapOverlays.add(overlay); 
    } 

    public void populateNow(){ 
     this.populate(); 
    } 

} 

map_view.xml

<?xml version="1.0" encoding="utf-8"?> 
<com.google.android.maps.MapView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/mapView" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:clickable="true" 
android:enabled="true" 
android:apiKey="API_KEY" 
/> 

$

回答