-2

我尝试通过以下代码在地图上获取我的位置,但我没有获得实时地图视图.....只有瓷砖网格等......地图视图不可见..请参阅代码和帮助。

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"
/>

$

4

1 回答 1

0

Android API v1 已弃用,您无法为其生成新的 API 密钥。您可能已经为 API v2 生成了一个。

迁移到 v2 的最简单方法是删除您现在拥有的所有代码并点击此链接:https ://developers.google.com/maps/documentation/android/start

于 2013-05-13T17:31:29.033 回答