2014-03-12 86 views
0

我想使用Google map Api在当前位置获取标记。我在Android手机上进行了测试,我只能看到一张地图。我目前的位置没有标记。即使是我在代码中放置的东西也没有显示。谁能帮我这个。 我张贴下面我的代码:如何在Android中使用Google Maps Api获取手机的当前位置?

public class MainActivity extends Activity implements LocationListener { 
GoogleMap map; 

@Override 
void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
.getMap(); 
} 

@Override 
    public void onLocationChanged(Location location) { 

map.clear(); 

MarkerOptions mp = new MarkerOptions(); 

    mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 

    mp.title("my position"); 

    map.addMarker(mp); 
    Toast.makeText(getApplicationContext(), 
     location.getLatitude() +", "+location.getLongitude(), 
     Toast.LENGTH_LONG).show(); 

    map.animateCamera(CameraUpdateFactory.newLatLngZoom(
    new LatLng(location.getLatitude(), location.getLongitude()), 16)); 

    } } 
+0

添加所需的权限进入的manifest.xml –

+0

我已经添加的所有权限来体现。 – user3256145

回答

0

有一个在由谷歌地图给出的,如果你想使用谷歌地图获得位置建造方法。

map.getLatitude(); 
map.getLongitude(); 

试试吧,它会起作用。

+0

它是googleMap.getLatitude()吗? – user3256145

+0

=在你的情况下,它的“地图”。 –

+0

我不能使用这些方法与地图 – user3256145

0

您已经在此获得位置:在您的移动GPS location.getLatitude(), location.getLongitude()

+0

但标记未设置到位置上 – user3256145

0

打开,到时将停止闪烁,则意味着它已得到了位置,然后标记将显示。

1

刚刚从你的代码中删除map.clear();,并添加marker.remove();

这是为我工作..尝试这个,

protected void onCreate(Bundle savedInstanceState) 
      { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 
       //actionBar.getActionBar(); 



       locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
       System.out.println("current "+locationManager); 

       locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 1, this); 
       location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 

       addGoogleMap(); 
       addMarkers(); 

      } 

      @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi") 
      private void addGoogleMap() { 
       if(googleMap == null){ 
       googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
       googleMap.setOnMarkerClickListener(this); 
        googleMap.setOnMarkerDragListener(this); 
       } 

      } 


      private void addMarkers() { 

       if(googleMap != null) 
       { 
       lt = new LatLng(location.getLatitude(), location.getLongitude()); 


       marker = googleMap.addMarker(new MarkerOptions().position(lt) 
          .title("Current location ").snippet("Race Start: 9:00 AM CST") 
          .draggable(false)); 

       googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
          lt, 20)); 
       } 

      } 

@Override 
      public void onLocationChanged(Location location) { 
      //txtLat = (TextView) findViewById(R.id.textview1); 
      //txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude()); 
       System.out.println("loc changed"); 
       //googleMap.clear(); 
       marker.remove(); 
       locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
       System.out.println("current "+locationManager); 

       locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 1, this); 
       location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
       lt = new LatLng(location.getLatitude(), location.getLongitude()); 
       marker = googleMap.addMarker(new MarkerOptions().position(lt) 
          .title("Current location ").snippet("Race Start: 9:00 AM CST") 
          .draggable(false)); 
} 
相关问题