0

gps を使用して現在の位置を取得し、対応する住所に変換するアプリケーションを作成しています。Google マップでこの位置をマークしたいと思います。マップを表示できますが、位置をマークできません。これは私のコードです

package com.gpsshoppe;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.maps.GeoPoint;

 public class MapActivity extends FragmentActivity {
GoogleMap map;
//Location location;

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
         LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

        LocationListener mlocListener = new GpsMapLocationActivity();
        mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);


        if (map == null) {
             map = ((SupportMapFragment)  getSupportFragmentManager().findFragmentById(R.id.map))
                       .getMap();

          map.setMyLocationEnabled(true);


        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.map, menu);
        return true;
    }



        private class GpsMapLocationActivity implements LocationListener{

            @Override
            public void onLocationChanged(Location location) {
                // TODO Auto-generated method stub
                if (location != null) {
                      final GeoPoint point = new GeoPoint(
                          (int) (location.getLatitude() * 1E6), 
                          (int) (location.getLongitude() * 1E6));

                       String address = ConvertPointToLocation(point);
                      address.toString();
                      Log.i("ADRESSS", ""+point);


                }

            }

            public  String ConvertPointToLocation(GeoPoint point) {
                // TODO Auto-generated method stub
                 String address = "";
                  Geocoder geoCoder=new  Geocoder(getBaseContext(), Locale.getDefault());

                  try {
                      List<Address> addresses = geoCoder.getFromLocation(
                        point.getLatitudeE6()  / 1E6, 
                        point.getLongitudeE6() / 1E6, 1);

                      if (addresses.size() > 0) {
                        for (int index = 0; 
                    index < addresses.get(0).getMaxAddressLineIndex(); index++)
                          address += addresses.get(0).getAddressLine(index) +  " ";
                      }
                    }
                    catch (IOException e) {        
                      e.printStackTrace();
                    }   

                    return address;
            }

            @Override
            public void onProviderDisabled(String provider) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProviderEnabled(String provider) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onStatusChanged(String provider, int status,
                    Bundle extras) {
                // TODO Auto-generated method stub

            }

        }



}

助けてください...よろしくお願いします..

4

2 に答える 2

2

現在の位置にマーカーを追加するだけです:

private GoogleMap mMap;
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
mMap.addMarker(new MarkerOptions()
        .position(new LatLng(yourlat, yourlong))
        .title("My position"));

マーカー、情報ウィンドウなどについてのすべて。

https://developers.google.com/maps/documentation/android/marker#add_a_marker

于 2013-11-12T10:04:22.033 に答える
1

Google Maps API V2 はGeoPointオブジェクトをサポートしていません。代わりに、 LatLngオブジェクトの位置表現を使用してマーカーを作成する必要があります。

これの代わりに:

  if (location != null) {
                  final GeoPoint point = new GeoPoint(
                      (int) (location.getLatitude() * 1E6), 
                      (int) (location.getLongitude() * 1E6));

                   String address = ConvertPointToLocation(point);
                  address.toString();
                  Log.i("ADRESSS", ""+point);

この場所にマーカーを追加するには、次のようにします。

 if (location != null) {
                  final GeoPoint point = new GeoPoint(
                      (int) (location.getLatitude() * 1E6), 
                      (int) (location.getLongitude() * 1E6));

                   String address = ConvertPointToLocation(point);address.toString();
                  Log.i("ADRESSS", ""+point);

                   Marker marker = map.addMarker(new MarkerOptions()
                .position(new LatLng(location.getLatitude(), ocation.getLongitude()))
                .title(name)
                .snippet(address)
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.your_marker_icon)));
于 2013-11-12T10:04:47.363 に答える