如何在谷歌地图gms中添加当前位置

时间:2013-11-12 08:22:58

标签: android google-maps

我编写了一个程序,它获取当前的经纬度,然后将其转换为相应的地址,我也想在谷歌地图中标记位置。前两个部分工作正常,我无法在地图中标记它。 这是我的代码

  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

        }

       }



   }

运行应用程序时会显示谷歌地图。但我会在地图上标记确切的位置。

期待你的帮助..

提前致谢..

1 个答案:

答案 0 :(得分:0)

你必须使用标记,这就是我使用它的方式。

map.addMarker(new MarkerOptions().position(LATLNG).title(TITLE).snippet(ADDITIONAL_INFO);