在我的应用程序中,我的web服务有多个纬度和经度。此时,使用下面的代码,我只能在goole地图上显示一个坐标。
public class CustomMap extends MapActivity {
MapView mapView;
List<Overlay> mapOverlays;
Drawable drawable;
Drawable drawable2;
CustomItemizedOverlay<CustomOverlayItem> itemizedOverlay2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gmap);
//setContentView(LayoutInflater.from(getParent()).inflate(R.layout.main_ou, null));
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapOverlays = mapView.getOverlays();
// second overlay
drawable2 = getResources().getDrawable(R.drawable.red);
itemizedOverlay2 = new CustomItemizedOverlay<CustomOverlayItem>(drawable2, mapView);
GeoPoint point3 = new GeoPoint((int)(-10.224609*1E6),(int)(17.506044*1E6));
CustomOverlayItem overlayItem3 = new CustomOverlayItem(point3, "Title",
"Cliquez here", null);
itemizedOverlay2.addOverlay(overlayItem3);
//itemizedOverlay2.onTap(0);
mapOverlays.add(itemizedOverlay2);
final MapController mc = mapView.getController();
mc.animateTo(point3);
mc.setZoom(16);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
现在,我想使用数组在地图上动态设置纬度和经度。我正在使用ArrayList val;获取和设置数据。有人能给我一个如何使这个类动态的提示吗。
新建更新下面的代码只显示一个标记,但我希望显示所有标记
public class Map extends MapActivity {
private MapController mapControll;
private GeoPoint geoPoint=null;
private MapView mapview;
private MyItemizedOverlay userPicOverlay;
private MyItemizedOverlay nearPicOverlay;
private Drawable userPic,atmPic;
private CustomOverlayItem nearatms[] = new CustomOverlayItem[50];
public static Context context;
double latitude,longitude;
ArrayList<Article> mArticles;
CustomOverlayItem overlayItem3 ;
public ArrayList<Article> articles;
public static ArrayList<Article> article;
EditText search;
DBHelper helper;
GeoPoint point;
MapView mapView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.aproximite);
context = getApplicationContext();
mapView = (MapView) findViewById(R.id.mapview);
mapView = (MapView) findViewById(R.id.mapview);
search = (EditText)findViewById(R.id.search_box);
helper = DBHelper.getInstance(this);
geoPoint = new GeoPoint((int)(latitude * 1E6),(int)(longitude * 1E6));
mapview = (MapView)findViewById(R.id.mapview);
mapControll= mapview.getController();
mapview.setBuiltInZoomControls(true);
mapview.setStreetView(true);
mapControll.setZoom(16);
mapControll.animateTo(geoPoint);
userPic = this.getResources().getDrawable(R.drawable.boutton_log);
userPicOverlay = new MyItemizedOverlay(userPic);
OverlayItem overlayItem = new OverlayItem(geoPoint, "I'm Here!!!", null);
userPicOverlay.addOverlay(overlayItem);
mapview.getOverlays().add(userPicOverlay);
atmPic = this.getResources().getDrawable(R.drawable.boutton_log);
nearPicOverlay = new MyItemizedOverlay(atmPic);
new GetLocationTask().execute();
}
private class GetLocationTask extends AsyncTask<Void, Void, Void> {
@Override
public Void doInBackground(Void... params) {
mArticles = helper.getArticlesList();
return null;
}
@Override
public void onPreExecute() {}
@Override
public void onPostExecute(Void result) {
try {
for (int i = 0; i < mArticles.size(); i++) {
point = new GeoPoint((int)(Double.parseDouble(mArticles.get(i).getLatitude())*1E6),(int)(Double.parseDouble(mArticles.get(i).getLongitude())*1E6));
nearatms[i] = new CustomOverlayItem(point ,"title",
"click here", null);
nearPicOverlay.addOverlay(nearatms[i]);
}
mapview.getOverlays().add(nearPicOverlay);
//Added symbols will be displayed when map is redrawn so force redraw now
mapview.postInvalidate();
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
MyItemizedOverlay.class
public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> myOverlays ;
public MyItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
myOverlays = new ArrayList<OverlayItem>();
populate();
}
public void addOverlay(OverlayItem overlay){
myOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return myOverlays.get(i);
}
// Removes overlay item i
public void removeItem(int i){
myOverlays.remove(i);
populate();
}
// Returns present number of items in list
@Override
public int size() {
return myOverlays.size();
}
public void addOverlayItem(OverlayItem overlayItem) {
myOverlays.add(overlayItem);
populate();
}
public void addOverlayItem(int lat, int lon, String title) {
try {
GeoPoint point = new GeoPoint(lat, lon);
OverlayItem overlayItem = new OverlayItem(point, title, null);
addOverlayItem(overlayItem);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
@Override
protected boolean onTap(int index) {
// TODO Auto-generated method stub
String title = myOverlays.get(index).getTitle();
System.out.println(index);
return super.onTap(index);
}
}
使用这种方式。。
对于google map v1--
对于Google MAP v2,请检查以下代码
调用此方法
for(int i = 0 ; i < arraylist.size();i++){
addMarker(mapview,arraylistLat.get(i),arraylistLong.get(i),title.get(i),arraysnippet.get(i));
}
private void addMarker(GoogleMap map, double lat, double lon,
String string, String string2) {
map.addMarker(new MarkerOptions().position(new LatLng(lat, lon))
.title(string).snippet(string2));
}
我想添加多个点击激活的标记和信息。我有麻烦,以显示相关的信息标记,点击后,相同的信息标记为所有标记打开。 信息来自for循环这是代码
我可以使用命令lp-o DymoPrintQuality=Text-o PageSize=w54h144-o横向-n 1-d Dymo400Turbo/tmp/test打印单个标签。txt。 当我使用命令lp-n2-o DymoPrintQuality=Text-o PageSize=w54h144-o横向-d Dymo400Turbo/tmp/test时。它打印一个标签,而不是2个。 我已经测试
我正在尝试将标签添加到我的lm图中的每个数据点。我想通过索引标记每个数据点。现在我的代码如下: 这会将所有标签绘制到最后一个绘图上。 带标签的lmplot 我尝试使用整个图形而不是当前轴来标记点(ddf.target、ddf.source、ddf.chip、plt.gcf()),但它抛出了一个错误。
我调用API,然后将JSON数据添加到arraylist中,然后调用arraylist数据,并将纬度和经度放置在地图上,放置多个标记。我相信我的问题是从ArrayList获取字符串,但我不知道如何解决它。 我正在从另一个类调用API 私有GoogleMap mMap;
我有一个标签,这是使用了多次在我的网页。它工作得很好,直到我尝试按Ajax更新标签。结果:只有第一个标签得到更新。这是一个已知的问题吗?我不确定,因为我不能打开JIRA页面:https://issues.apache.org/JIRA/browse/wicket(一直在跳)。我使用的是wicket 7.3.0版本 =>只更新第一个标签。我有一个解决办法,通过添加4个不同的标签实例与相同的文本内容。