2014-06-13 72 views
8

我无法显示compass图标和my location图标。我有代码googleMap.getUiSettings.setMyLocationButtonEnabled(true)googleMap.getUiSettings().setCompassEnabled(true);,但它没有显示在地图上。Android Google Maps v2未显示指南针和位置图标

package com.ctc.weathermap; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.provider.Settings; 
import android.widget.Toast; 

public class WeatherMapActivity extends Activity implements LocationListener { 

private GoogleMap googleMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.weather_maps_main); 

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 

    LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE); 

    boolean enabledGPS = service.isProviderEnabled(LocationManager.GPS_PROVIDER); 
    boolean enabledWiFi = service.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

    if (!enabledGPS) { 
     Toast.makeText(this, "GPS signal not found", Toast.LENGTH_LONG).show(); 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivity(intent); 
    } 
    else if(!enabledWiFi) { 
      Toast.makeText(this, "Network signal not found", Toast.LENGTH_LONG).show(); 
      Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      startActivity(intent); 
    } 

    initializeMap(); 
    googleMap.getUiSettings().setMyLocationButtonEnabled(true); 
    googleMap.getUiSettings().setCompassEnabled(true); 
} 

private void initializeMap() { 
    // check if map is created 
    if(googleMap == null) { 
     googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); // creates the map 

     // check if map is created successfully or not 
     if (googleMap == null) { 
      Toast.makeText(getApplicationContext(), 
        "Map could not be created", Toast.LENGTH_SHORT) 
        .show(); 
     } 
    } 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    initializeMap(); 
} 

@Override 
public void onLocationChanged(Location location) { 
    googleMap.clear(); 
    MarkerOptions marker = new MarkerOptions().position(new LatLng(location.getLatitude(), location.getLongitude())); 
    marker.title("Current location"); 
    marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)); 
    googleMap.addMarker(marker); 
    googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 16)); 
} 

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

} 

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

} 

@Override 
public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 
    // TODO Auto-generated method stub 

} 

}

的代码的其余作品诸如标志,什么不是。我曾尝试将位置和指南针的代码放在initializeMap()中,但它仍未显示出来。我将不胜感激任何帮助。谢谢!

+0

试试这个。首先写这个'googleMap.setMyLocationEnabled(true);'然后写出你写的两个代码.. – Lal

+0

好吧,让'setMyLocationButton'出来谢谢!但指南针图标仍然不显示... – user2127726

+0

我认为指南针图标只有在您将地图旋转至不与北向对齐时才会出现,所以请长按地图并拖动它......然后我认为您将能够看到指南针.. – Lal

回答

38

您还没有启用的我的位置layer.Check这link了解更多详情

因此,请

googleMap.setMyLocationEnabled(true); 

googleMap.getUiSettings().setMyLocationButtonEnabled(true); 
googleMap.getUiSettings().setCompassEnabled(true); 

这会让你的setMyLocationButton拿出..

而且,仅当您将地图旋转至未对齐至北时,罗盘图标才会显示。

+0

确定具有'setMyLocationEnabled(true)'有道理......非常感谢!指南针现在出现 – user2127726

+0

很高兴它帮助.. :) – Lal

+0

它没有帮助我..我的类是一个片段,而不是一个活动,像这样:'公共类MyMapFragment扩展Fragment实现OnMapReadyCallback,LocationListener {'可以是原因吗? – Supercelo