2016-04-18 2 views
0

Я пытаюсь добавить маркер в зависимости от того, на какую активность он включен. Например, если пользователь находится в действии location1 и нажимает кнопку для открытия карт, он должен открыть Карты Google с помощью маркера, где находится location1. В качестве альтернативы, если пользователь находится в действии location2 и нажимает кнопку для открытия карт, он должен открыть Карты Google с помощью маркера, где находится место 2.Добавление нескольких маркеров Google Maps

У меня есть работа, когда они нажимают на одно действие, оно приводит их к Картам Google и имеет маркер, где это место. Я просто попытался скопировать код и вставить его ниже с отредактированными именами в нем, но если я нажму на другое действие, чтобы перейти к картам, он приведет меня к тому же маркеру, что и ранее.

Мой код для GoogleMapsActivity ниже:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

private GoogleMap mMap; 

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

    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    //mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

    // Add a marker at the Oval and move the camera 
    LatLng oval = new LatLng(53.3484013, -6.2605243); 
    mMap.addMarker(new MarkerOptions().position(oval).title("Oval Pub")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(oval)); 

    /* 
    // Add a marker at Diceys and move the camera 
    LatLng diceys = new LatLng(53.3358088,-6.2636688); 
    mMap.addMarker(new MarkerOptions().position(diceys).title("Diceys Nightclub")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(diceys)); 
    */ 
} 

public void changeType(View view) 
{ 
    if(mMap.getMapType() == GoogleMap.MAP_TYPE_NORMAL) 
    { 
     mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); 
    } 
    else 
     mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
}} 

Как вы можете видеть, я закомментировать код, в котором я попытался добавить маркер на другое место, но это, кажется, приносит мне к тому же как указано выше.

Не уверен, что это что-то простое или нет, поскольку я новичок в Google Maps на Android.

Любая помощь была бы принята с благодарностью.

спасибо.

+0

Что вам нужно? Что он должен менять маркер в соответствии с предыдущей деятельностью, ryt? Вы могли бы, называя это MapsActivity, просто поставить долготы и широты. И заведите их в onCreate. И добавьте это как маркер. –

+0

Я хочу, чтобы у вас была возможность щелкнуть кнопку в рамках действия, которое откроет Карты Google, в зависимости от того, в какой активности нажала кнопка, которую вы только что нажали. Поэтому activity1 должен привести вас к Картам Google, на которых отмечена активность 1. Не уверен, что вы подразумеваете, получив их в onCreate и добавив их в качестве маркеров ... –

+0

Нажмите ответ, который я опубликовал –

ответ

0

Связывая все это вместе:

ArrayList<LatLng> locations = new ArrayList(); 
locations.add(new LatLng(30.243442, -1.432320)); 
locations.add(new LatLng(... , ...)); 
. 
. 
. 

for(LatLng location : locations){ 
mMap.addMarker(new MarkerOptions() 
    .position(location) 
    .title(...) 
} 
+0

Я дам это, спасибо :) –

+0

У вас это пробовали? @RyanScollard –

+0

Да, и я не совсем уверен, что я делаю неправильно, но он дает мне ошибки. Можете ли вы представить пример своего кода, чтобы он соответствовал моему коду, указанному в исходном вопросе? Это дает мне ошибки, такие как неизвестный класс для местоположений и недопустимое объявление метода для LatLng. Это может быть что-то простое, но я не совсем уверен, где я ошибаюсь. Thanks –

1
ArrayList<MarkerData> markerArray = new ArrayList<MarkerData>(); 
for(int i = 0 ; i < markersArray.size() ; i++) { 

createMarker(markersArray.get(i).getLatitude(), markersArray.get(i).getLongitude(), markersArray.get(i).getTitle(), markersArray.get(i).getSnippet(), markersArray.get(i).getIconResID()); 
} 
.... 
protected void createMarker(double lat, double lon, String title, String snippet, int iconResID) { 
return googleMap.addMarker(new MarkerOptions() 
     .position(new LatLng(lat, lon)) 
     .anchor(0.5f, 0.5f) 
     .title(title) 
     .snippet(snippet); 
     .icon(BitmapDescriptorFactory.fromResource(iconResID))); 
} 
0

В первом Месте деятельности:

Intent i = new Intent(FirstLocationActivity.this, MapsActivity.class); 
    String keyLatitude = ""; //enter the value 
    String keyLongitude = ""; //enter the value 
    i.putExtra("latitude", keyLatitude); 
    i.putExtra("longitude", keyLongitude); 
startActivity(i); 

так же сделать то же самое для деятельности два местоположения, добавить свою соответствующую широту и долготу в дополнительной

На ваших картахАктивность,

String latitude=""; 
    String longitude =""; 

public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.table); 

     Bundle bundle = getIntent().getExtras(); 

     latitude = bundle.getString("latitude"); 
     longitude = bundle.getString("longitude"); 

    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     //mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

     // Add a marker at the Oval and move the camera 
     LatLng oval = new LatLng(latitude,longitude); 
     mMap.addMarker(new MarkerOptions().position(oval).title("Oval Pub")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(oval)); 

    } 
+0

Это все еще делает то же самое, где независимо от местоположения, объявленного сначала в MapsActivity, маркер находится на этом для всех действий –

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