2016-05-04 19 views
0

図2のようにGoogleマップを使用して現在の場所を表示したいのですが、Googleマップが現在の場所を読み込むのに時間がかかる地図には最初にコード "LatLng mPosition = new LatLng(34.6767、33.04455);"で設定した場所が表示されます。私はそれを "LatLng mPosition"に置き換えようとしました。同じ問題が依然として存在します。それを修正するためのあらゆる対策?Googleマップ:現在の場所が正しく読み込まれる前に「固定された場所」が表示されます

GoogleMap googleMap; 
GetLocation getLocation = new GetLocation();  

//LatLng mPosition = new LatLng(34.6767, 33.04455); 
LatLng mPosition; 
final Marker marker_final = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.map); 
getLocation.getLocation(getApplicationContext(), locationResult); 
MapFragment mapFragment = (MapFragment)  getFragmentManager().findFragmentById(R.id.map_fragment); 
googleMap=mapFragment.getMap(); 
} 


public LocationResult locationResult = new LocationResult() { 
@Override 
public void gotLocation(Location location) { 
    double Longitude = location.getLongitude(); 
    double Latitude = location.getLatitude(); 

    Toast.makeText(getApplicationContext(), "Got Location Long: "+Longitude+"; Lat: "+Latitude, 
     Toast.LENGTH_LONG).show(); 

    mPosition = new LatLng(Latitude, Longitude); 

    googleMap.setMyLocationEnabled(true); 
    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mPosition, 13)); 
    CameraUpdate zoom = CameraUpdateFactory.zoomTo(18); 
    googleMap.animateCamera(zoom); 

    /* 
    googleMap.addMarker(new MarkerOptions() 
    .title("Shop") 
    .snippet("Is this the right location?") 
    .position(mPosition)).setDraggable(true); 
    */ 

    googleMap.addMarker(setMarkerOptions("Your Shop","The Right Position?",mPosition)).setDraggable(true); 

    // map.setInfoWindowAdapter(new PopupAdapter(getLayoutInflater())); 
    googleMap.setOnInfoWindowClickListener(GmapDragActivity.this); 
    googleMap.setOnMarkerDragListener(GmapDragActivity.this); 


} 
}; 

private MarkerOptions setMarkerOptions(String title,String msg,LatLng position){ 
MarkerOptions options=new MarkerOptions(); 

options.title(title); 
options.snippet(msg); 
options.position(position); 

return options; 
} 

私はあなたの活動にenter image description here

+0

これはズームレベルとは関係ありません。 私の現在地は香港の "香港仔"(LatLng(26.2792378、134.1776))です。 しかし、地図を開いたとき、最初に "國立中央大學"(LatLng(34.6767) 、33.04455)台湾ではそれがLatLng(26.2792378、134.1776)に戻るのに5秒かかります。 なぜこのようなことが起こっているのか分かりませんが、これを避けたい場合は –

+0

とこの行をコメントしてください。推測します.. googleMap.setMyLocationEnabled(true); – Stallion

答えて

0

、あなたが最初にあなたのマップをロードするとき、あなたはマップ上の最後の既知の位置を示すことができました。あなたのonCreateでそのためにこれを追加します。

LocationManager mLocationManager = (LocationManager) mContext 
      .getSystemService(LOCATION_SERVICE); 
if (mLocationManager != null) { 
     Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     LatLng newLatLng = new LatLng(location.getLatitude(), location.getLongitude()); 
     mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(newLatLng, 10)); 

     // 
     //If you want to add marker 
     // 
     mMap.addMarker(new MarkerOptions().position(newLatLng)); 
} 

すでにGPSを使用しているので、あなたはおそらく、このコードのために必要な権限を追加しました。

関連する問題