2015-09-24 92 views
1

夥計們我在我的android應用中實施谷歌地圖,創建標記的原因我在標記中放置了一個標記圖像地圖。現在,我希望每當用戶拖動地圖時,我都會在地圖中心位置(我已將圖像放置爲標記)。如何獲得谷歌地圖在地圖中心的位置(LatLng /名稱)

我的地圖活動是:

public class MapActivity extends FragmentActivity implements LocationListener { 

private GoogleMap mMap; // Might be null if Google Play services APK is not available. 
TextView Title; 
FrameLayout goback; 
Location myLocation; 
LocationManager locationManager; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map); 

    setUpMapIfNeeded(); 
    SupportMapFragment supportMapFragment = 
      (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
    mMap = supportMapFragment.getMap(); 
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    String bestProvider = locationManager.getBestProvider(criteria, true); 

    Location location = locationManager.getLastKnownLocation(bestProvider); 
    if (location != null) { 
     onLocationChanged(location); 
    } 
    locationManager.requestLocationUpdates(bestProvider, 20000, 0, this); 

    //try 
    Title=(TextView)findViewById(R.id.map_title); 
    Title.setText(getIntent().getExtras().getString("Header")); 
    goback=(FrameLayout)findViewById(R.id.frame_layout); 
    setUpMapIfNeeded(); 
    // mMap.setMyLocationEnabled(true); 


} 

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


private void setUpMapIfNeeded() { 
    // Do a null check to confirm that we have not already instantiated the map. 
    if (mMap == null) { 
     // Try to obtain the map from the SupportMapFragment. 
     mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
       .getMap(); 


     // Check if we were successful in obtaining the map. 
     if (mMap != null) { 
      setUpMap(); 
     } 
    } 
} 


private void setUpMap() { 



} 


@Override 
public void onLocationChanged(Location location) { 
    double latitude = location.getLatitude(); 
    double longitude = location.getLongitude(); 
    LatLng latLng = new LatLng(latitude, longitude); 
    BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.marker); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
    mMap.animateCamera(CameraUpdateFactory.zoomTo(5)); 
    CameraPosition ll=mMap.getCameraPosition(); 
    Toast.makeText(getApplicationContext(),""+ll,Toast.LENGTH_LONG).show(); 


} 

@Override 
public void onStatusChanged(String s, int i, Bundle bundle) { 

} 

@Override 
public void onProviderEnabled(String s) { 

} 

@Override 
public void onProviderDisabled(String s) { 

} 

請幫我這樣做,謝謝:)

+0

謝謝您的答覆球員,我會嘗試這些東西,並將很快進行迴應 – Brucode

回答

4

首先,您可以獲取地圖容器的相關信息,並通過除以2的寬度和高度來計算中心點。

View containerView=findViewById(R.id.mapContainer); 

LatLng centerPoint= this.map.getProjection().fromScreenLocation(new Point(((int)containerView.getWidth/2),((int)(containerView.getHeight/2))); 
1

您可以使用此方法

MapView.getProjection().fromPixels(x, y) 

其中x是你的一半寬度的地圖y是高度的一半。這應該回報你一個座標對象,反過來又會給你的經度和地圖中心的緯度

關於它的更多信息可以看出here

+0

感謝resopnse但在應用中的一些其他分辨率的設備上運行,不會改變它? – Brucode

+0

如果使用容納地圖的容器的寬度和高度,則不適用。該地圖將與設備 – RyanOfCourse

+0

進行比例。謝謝:) – Brucode

2

,你可以得到的中心是這樣的:

mMap.getCameraPosition().target 

其中mMap是您活動中的GoogleMap實例。這將返回一個基本上代表地圖中心的LatLng對象。請注意,GeoPoint類不再可用。

根據http://developer.android.com/reference/com/google/android/gms/maps/model/CameraPosition.html

目標是「相機所指向的位置。」 (測試它與示例代碼,它爲我工作正常)

讓我知道這是否幫助你。

乾杯!

+0

請注意它 – KishuDroid

+0

並接受它作爲答案,如果它可以幫助你 – KishuDroid

相關問題