如何在android应用程序中在google地图上添加多个标记

如何在android应用程序中在google地图上添加多个标记,android,sqlite,google-maps,google-maps-markers,Android,Sqlite,Google Maps,Google Maps Markers,我有一个问题,就是在我的应用程序中的谷歌地图上,从数据库获取值的数组列表中添加多个标记 当我写这段代码时,我只得到一个标记,它是数组的最后一个地址,但我希望映射中的所有地址都带有标记 package com.example.rajkot_tourism; import handler.handler; import java.util.ArrayList; import java.util.List; import java.util.Locale; import property.pro

我有一个问题,就是在我的应用程序中的谷歌地图上,从数据库获取值的数组列表中添加多个标记

当我写这段代码时,我只得到一个标记,它是数组的最后一个地址,但我希望映射中的所有地址都带有标记

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);


    }
}
package com.example.rajkot_旅游;
导入handler.handler;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Locale;
进口物业;
导入com.google.android.gms.maps.model.LatLng;
导入com.google.android.gms.maps.model.MarkerOptions;
导入android.location.Address;
导入android.location.Criteria;
导入android.location.Geocoder;
导入android.location.location;
导入android.location.LocationListener;
导入android.location.LocationManager;
导入android.os.Bundle;
导入android.widget.Toast;
导入android.support.v4.app.FragmentActivity;
导入android.support.v4.app.FragmentManager;
导入com.google.android.gms.maps.GoogleMap;
导入com.google.android.gms.maps.SupportMapFragment;
导入com.google.android.gms.maps.model.BitmapDescriptorFactory;
导入com.google.android.gms.maps.model.LatLng;
导入com.google.android.gms.maps.model.MarkerOptions;
公共类mainmap扩展了android.support.v4.app.FragmentActivity
{
ArrayList arlat=新的ArrayList();
ArrayList arlang=新的ArrayList();
ArrayList arname=新的ArrayList();
私人谷歌地图谷歌地图;
私人场所经理;
私有标记选择标记;
双液化天然气;
双lat;
字符串名;
字符串名称1;
双板条1;
双lng1;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(右布局主地图);
googlemap=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
Bundle b=getIntent().getExtras();
国际数据中心=b.getInt(“国际数据中心”);
handler h=新处理程序(mainmap.this);
ArrayList p=h.cat_图(idc);
对于(属性p1:p)
{
双纬度1=p1.getPlace_lation();
double lng1=p1.getPlace_longitude();
字符串placename=p1.getPlace_name();
arname.add(地名);
arlat.add(lat1);
添加(lng1);
}
标准=新标准();
标准。需要设置(假);
标准.设定准确度(标准.准确度/精细度);
条件.setCostAllowed(true);
标准。setAltitudeRequired(false);
标准。设置功率要求(标准。功率低);
loc=(位置管理器)getSystemService(位置服务);
字符串提供程序=loc.getBestProvider(条件为true);
位置=loc.getLastKnownLocation(提供者);
updatewithnewlocation(位置);
}
LocationListener loclist=新LocationListener(){
@凌驾
public void onStatusChanged(字符串提供程序、int状态、Bundle extra){
}
@凌驾
公共无效onProviderEnabled(字符串提供程序){
}
@凌驾
公共无效onProviderDisabled(字符串提供程序){
}
@凌驾
已更改位置上的公共无效(位置){
Toast.makeText(mainmap.this,“位置已更改”,Toast.LENGTH_LONG.show();
}
};
字符串lastloc;
私有void updatewithnewlocation(位置){

//for(int i=0;i在for循环中,当您添加所有标记时,您每次都会得到相同的值,而不是使用变量i循环。这就是您在获得值时所做的:

arname.get(0);
您需要执行以下操作:

arname.get(i);
可能重复的