2016-04-27 17 views
0

私はlocatonベースのリマインダーアプリを作っていますし、私はどのように現在のlocation..iにマーカーを追加するには、次のコードを使用していますことを知ってほしいと私はしたいが、マップビューをズームする任意のコードがあります。..Googleマップのv2で現在のロカトンにマーカーを追加するにはどうすればよいですか?

public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
    mMap.setMapType(googleMap.MAP_TYPE_NORMAL); 
    LatLng sydney = new LatLng(-34, 151); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 10f)); 

    //Add a marker in Sydney, Australia, and move the camera. 

    mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
     @Override 
     public void onMapClick(LatLng latLng) { 
      mMap.clear(); 
      locationLat = latLng.latitude; 
      locationLong = latLng.longitude; 

      AddLocationActivity.this.addMarker(new LatLng(locationLat,locationLong), AddLocationActivity.locationName); 

      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(locationLat,locationLong), 10.9f)); 
      AddLocationActivity.this.mainClass.locationName = address; 
      Log.i("AddLocationActivity",""+AddLocationActivity.this.mainClass.locationName); 

     } 
    }); 

} 
+0

が自分のドキュメントを見てください:https://developers.google.com/maps/documentation/android- api /マーカー。 – chRyNaN

答えて

1

あなたのコードは次のように応じて変更します

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
    @Override 
    public void onMapClick(LatLng latLng) { 
     mMap.clear(); 
     Marker marker = mMap.addMarker(new MarkerOptions().position(latLng).title("Title")); 
     marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)); 

     mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10.9f)); 
    } 
}); 
+0

私の編集コードを確認してください。私はこれらのコードを入れてください –

+0

これらのコードでcooment行の下にsetOnMapClickListener()のコード部分を置き換えてください。 –

1

マップビューをズームするために代わり

LatLng markerLocation = new LatLng(latitude,longitude); // latitude and longitude must be a float or double 
Marker marker = mMap.addMarker(new MarkerOptions() 
        .position(markerLocation)); // any title you want 

これを試してみてください、デフォルトの機能は、すでに存在しています。あなたは下を追加したい場合は、使用する手のジェスチャーは、あなたはここでズームコントロールに

を追加することができ、全体のコードでは、あなたは、Googleマップでonlicationchangelistenerにより現在位置を取得するための最初の必要性

public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
    mMap.setMapType(googleMap.MAP_TYPE_NORMAL); 
    LatLng sydney = new LatLng(-34, 151); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 10f)); 

    //Add a marker in Sydney, Australia, and move the camera. 

    mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
     @Override 
     public void onMapClick(LatLng latLng) { 
      mMap.clear(); 

      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10f)); 
      Marker marker = mMap.addMarker(new MarkerOptions().position(latLng)); 

     } 
    }); 
} 
+0

私はあなたを得ます,,,このコードの代わりにどの行を教えてください,,, –

+0

@AhadMurtazaは私のコードを更新しました –

0

です。ここにコード内のリスナーがあります。

次に、取得した場所に従ってマーカーを配置します。

は、以下のマップにリスナーを追加し

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() { 
@Override 
public void onMyLocationChange(Location location) { 
    LatLng loc = new LatLng(location.getLatitude(), location.getLongitude()); 
    if(mMarker == null){ 
     mMarker = mMap.addMarker(new MarkerOptions().position(loc)); 
    }else{ 
     mMarker.remove(); 
     mMarker = mMap.addMarker(new MarkerOptions().position(loc)); 
    } 
     mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16.0f)); 
} 
}; 

part-コードです。

mMap.setOnMyLocationChangeListener(myLocationChangeListener); 

これは、現在のlcoationにマーカーを配置します。

+0

推奨されていません – Erum

1

これが私のために働いていたこの方法を試してみてください

public class MainActivity extends Activity implements LocationListener { 
GoogleMap map; 

@Override 
protected 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); 

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

} 

@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 

} 

} 

OUTPUT

関連する問題