2015-11-29 2 views
0

Я хочу использовать представление карты в своем приложении, которое покажет положение маркеров, когда мы перетаскиваем карту. Для этого я понял, что это можно сделать, установив маркер в центр карты, поэтому, когда мы перетаскиваем карту, мы можем получить адрес текущей позиции. Например: enter image description hereКак установить маркер в центре карты?

Но я не знаю, как этого достичь. Надеюсь, я получу помощь отсюда.

ChooseFromMapActivity

public class ChooseFromMapActivity extends AppCompatActivity implements GoogleMap.OnCameraChangeListener { 

    TextView textShowAddress; 
    private GoogleMap mMap; 
    LatLng latLng; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_choose_from_map); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mMap = mapFragment.getMap(); 

     mMap.getUiSettings().setZoomControlsEnabled(true); 
     mMap.getUiSettings().setRotateGesturesEnabled(true); 
     mMap.getUiSettings().setScrollGesturesEnabled(true); 

     latLng = new LatLng(-34, 151); 
     mMap.addMarker(new MarkerOptions().position(latLng).title("Marker in Sydney")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 

     textShowAddress = (TextView) findViewById(R.id.textShowAddress); 

     if (Build.VERSION.SDK_INT >= 21) { 
      getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
      getWindow().setStatusBarColor(getResources().getColor(R.color.colorPrimaryDark)); 
     } 
    } 
    @Override 
    public void onCameraChange(CameraPosition position) { 
     mMap.clear(); 
     mMap.addMarker(new MarkerOptions() 
         .position(position.target) 
         .title(position.toString()) 
     ); 
    } 
} 
+0

проверить ответ ниже – Androider

ответ

0

Отрегулируйте карту в соответствии с положением маркера, как:

latLang = marker.getPosition(); // get LatLang object 
map.setCenter(latLang); //set google maps instance with that object of LatLang 

Вы также можете попробовать другой метод, перемещая положение камеры, как:

map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), zoom)); 
+0

Благодарим за сообщение. Ошибка отображения на setCenter. не может разрешить метод setCenter. –

+0

Вы тоже пытались переместить метод камеры? – Androider

+0

Дает ошибку для широты и долготы. Я инициализировал переменные. Не знаю, что происходит не так. Не могли бы вы показать мне код в деталях ?? –

0
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(location, 16)); 
mMap.addMarker(new MarkerOptions() 
     .position(location) 
     .draggable(false) 
     .title("sent location :)")); 
+0

Спасибо за ответ ... Я понимаю, что переменная местоположения для чего? Это переменная Latlang? –

+1

Это просто перемещает камеру в нужное место. Это не даст эффект перетаскивания маркеру, как я хочу. –

+0

@ user3623979 Да, это переменная latlng –

0

Попробуйте этот код:

mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() { 
@Override 
public void onCameraChange(CameraPosition cameraPosition) 
{ 
    if(mMarker==null) 
    { 
     mMarker = mMap.addMarker(new MarkerOptions().position(cameraPosition.target).title("Marker in Sydney") 
       .icon(BitmapDescriptorFactory.fromResource(R.mipmap.marker_ico))); 
     mMarker.showInfoWindow(); 
    } 
    else 
    { 
     mMarker.setPosition(cameraPosition.target); 
    } 
} 
}); 

Единственная проблема заключается в том, что ваш маркер переместится в центр карты только в конце карты перетаскиванием. Вы можете просто добавить ImageView и вставить его в центр вашего фрагмента карты, чтобы избежать этой проблемы. После этого вы можете использовать mMarker.setVisible (false); чтобы скрыть маркер и показать только ImageView в качестве маркера.

Смежные вопросы