2014-01-24 3 views
0

У меня есть проблема о добавлении нескольких маркеров на Google Maps в моем приложении из списка-массива его получения значений из базы данныхкак добавить несколько маркера на карте Google в Android App

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

package com.example.rajkot_tourism; 

import handler.handler; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.Locale; 

import property.property; 

import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

import android.location.Address; 
import android.location.Criteria; 
import android.location.Geocoder; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.widget.Toast; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class mainmap extends android.support.v4.app.FragmentActivity 
{ 

    ArrayList arlat=new ArrayList(); 
    ArrayList arlang=new ArrayList(); 
    ArrayList<String> arname=new ArrayList<String>(); 
    private GoogleMap googlemap; 
    private LocationManager loc; 
    private MarkerOptions marker; 
    double lng; 
    double lat; 
    String name; 

    String name1; 
    double lat1; 
    double lng1; 

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

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

     Bundle b=getIntent().getExtras(); 
     int idc=b.getInt("idc"); 

     handler h=new handler(mainmap.this); 
     ArrayList<property> p=h.cat_map(idc); 

     for(property p1 : p) 
    { 

      double lat1=p1.getPlace_latitude(); 
      double lng1=p1.getPlace_longitude(); 
      String placename=p1.getPlace_name(); 
      arname.add(placename); 
      arlat.add(lat1); 
      arlang.add(lng1); 
    } 
     Criteria criteria=new Criteria(); 
     criteria.setBearingRequired(false); 
     criteria.setAccuracy(Criteria.ACCURACY_FINE); 
     criteria.setCostAllowed(true); 
     criteria.setAltitudeRequired(false); 
     criteria.setPowerRequirement(Criteria.POWER_LOW); 

     loc=(LocationManager)getSystemService(LOCATION_SERVICE); 

     String provider=loc.getBestProvider(criteria, true); 

     Location location=loc.getLastKnownLocation(provider); 


     updatewithnewlocation(location); 

    } 



     LocationListener loclist=new LocationListener() { 

@Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 


    } 

@Override 
     public void onProviderEnabled(String provider) { 

    } 

@Override 
     public void onProviderDisabled(String provider) { 


    } 

@Override 
     public void onLocationChanged(Location location) { 

     Toast.makeText(mainmap.this,"Location Changed", Toast.LENGTH_LONG).show(); 
    } 

    }; 

     String lastloc; 

     private void updatewithnewlocation(Location location) { 

//  for(int i=0;i<arname.size();i++) 
//  
// { 
      name=arname.get(0); 
      lat=(Double) arlat.get(0); 
      lng=(Double) arlang.get(0); 

      marker = new MarkerOptions().position(new LatLng(lat, lng)).title(name); 

      marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET)); 
      googlemap.addMarker(marker); 

    //} 

      name1=arname.get(1); 
      lat1=(Double) arlat.get(1); 
      lng1=(Double) arlang.get(1); 

      MarkerOptions marker1 = new MarkerOptions().position(new LatLng(lat1, lng1)).title(name1); 

      marker1.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET)); 
      googlemap.addMarker(marker1); 


    } 
} 
+0

возможно дубликат http://stackoverflow.com/questions/19972476/how- к шоу-множественные маркеры на Google-карту-андроиде –

ответ

0

В ваш цикл, когда вы добавляете все свои маркеры, вы получаете то же значение каждый раз, а не циклически, используя переменную I. Это то, что вы делаете, когда вы получаете значения:

arname.get(0); 

Вам нужно сделать:

arname.get(i); 
Смежные вопросы