如何在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);
可能重复的