Как использовать другое изображение для второй точки на карте
package com.Android.WiC_MobileApp;
import java.util.ArrayList;
import java.util.List;
import com.Android.WiC_MobileApp.MapMarkerActivity;
import com.Android.WiC_MobileApp.R;
import com.Android.WiC_MobileApp.MapMarkerActivity.SitesOverlay;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.OverlayItem;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MapMarkerActivity extends MapActivity {
private MapView map=null;
private MyLocationOverlay me=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.particular_entry);
map=(MapView)findViewById(R.id.map);
map.getController().setCenter(getPoint(FeedListViewActivity.lat,
FeedListViewActivity.lng));
map.getController().setZoom(13);
map.setBuiltInZoomControls(true);
Drawable marker1=getResources().getDrawable(R.drawable.marker);
Drawable marker2=getResources().getDrawable(R.drawable.ic_launcher);
marker1.setBounds(0, 0, marker1.getIntrinsicWidth(),
marker1.getIntrinsicHeight());
map.getOverlays().add(new SitesOverlay(marker1));
me=new MyLocationOverlay(this, map);
map.getOverlays().add(me);
}
@Override
public void onResume() {
super.onResume();
me.enableCompass();
}
@Override
public void onPause() {
super.onPause();
me.disableCompass();
}
@Override
protected boolean isRouteDisplayed() {
return(false);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_S) {
map.setSatellite(!map.isSatellite());
return(true);
}
else if (keyCode == KeyEvent.KEYCODE_Z) {
map.displayZoomControls(true);
return(true);
}
return(super.onKeyDown(keyCode, event));
}
private GeoPoint getPoint(double lat, double lon) {
return(new GeoPoint((int)(lat*1000000.0),
(int)(lon*1000000.0)));
}
public class SitesOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> items=new ArrayList<OverlayItem>();
public SitesOverlay(Drawable marker) {
super(marker);
boundCenterBottom(marker);
items.add(new OverlayItem(getPoint(MyLocationActivity.myLocationLatitude,
MyLocationActivity.myLocationLongitude),
"YL", "Your Location"));
items.add(new OverlayItem(getPoint(FeedListViewActivity.lat,
FeedListViewActivity.lng),
"SL",
"Store Location"));
populate();
}
@Override
protected OverlayItem createItem(int i) {
return(items.get(i));
}
@Override
protected boolean onTap(int i) {
Toast.makeText(MapMarkerActivity.this,
items.get(i).getSnippet(),
Toast.LENGTH_SHORT).show();
return(true);
}
@Override
public int size() {
return(items.size());
}
}
}
В методе SitesOverlay (Drawable marker) я добавляю 2 элемента overlayitems, i, что оба должны быть разными.... Я нашел код другого типа, чтобы достичь этого.... используя метод draw... но как достичь в этом кейс.... пожалуйста, помогите... спасибо
Чтобы просто ответить на ваш вопрос, все, что вам нужно сделать, это добавить эту строку к методу onCreate:
map.getOverlays().add(new SitesOverlay(marker2));
Я не думаю, что я вполне понимаю проблему, с которой вы столкнулись, поскольку я не мог понять ваше описание проблемы. Я бы сказал, что вы должны построить SiteOverlay с маркером, который хотите использовать, а затем построить OverlayItem, а затем добавить OverlayItem в SiteOverlay, а затем добавить SiteOverlay в map.getOverlays.add(...); Я изменил большую часть вашего кода, чтобы уточнить, что я имею в виду выше. Надеюсь это поможет! И не стесняйтесь задавать мне дополнительные вопросы.
package com.Android.WiC_MobileApp;
import java.util.ArrayList;
import java.util.List;
import com.Android.WiC_MobileApp.MapMarkerActivity;
import com.Android.WiC_MobileApp.R;
import com.Android.WiC_MobileApp.MapMarkerActivity.SitesOverlay;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.OverlayItem;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MapMarkerActivity extends MapActivity {
private MapView map=null;
private MyLocationOverlay me=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.particular_entry);
map=(MapView)findViewById(R.id.map);
map.getController().setCenter(getPoint(FeedListViewActivity.lat,
FeedListViewActivity.lng));
map.getController().setZoom(13);
map.setBuiltInZoomControls(true);
Drawable marker1=getResources().getDrawable(R.drawable.marker);
Drawable marker2=getResources().getDrawable(R.drawable.ic_launcher);
SitesOverlay sitesOverlay1 = new SitesOverlay(marker1);
OverlayItem item1 = new OverlayItem(getPoint(MyLocationActivity.myLocationLatitude,
MyLocationActivity.myLocationLongitude),
"YL", "Your Location");
sitesOverlay1.addOverlay(item1);
map.getOverlays().add(sitesOverlay1);
SitesOverlay sitesOverlay2 = new SitesOverlay(marker2);
OverlayItem item2 = new OverlayItem(getPoint(FeedListViewActivity.lat,
FeedListViewActivity.lng),
"SL",
"Store Location"));
sitesOverlay2.addOverlay(item2);
map.getOverlays.add(sitesOverlay2)
me=new MyLocationOverlay(this, map);
map.getOverlays().add(me);
}
@Override
public void onResume() {
super.onResume();
me.enableCompass();
}
@Override
public void onPause() {
super.onPause();
me.disableCompass();
}
@Override
protected boolean isRouteDisplayed() {
return(false);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_S) {
map.setSatellite(!map.isSatellite());
return(true);
}
else if (keyCode == KeyEvent.KEYCODE_Z) {
map.displayZoomControls(true);
return(true);
}
return(super.onKeyDown(keyCode, event));
}
private GeoPoint getPoint(double lat, double lon) {
return(new GeoPoint((int)(lat*1000000.0),
(int)(lon*1000000.0)));
}
public class SitesOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> items=new ArrayList<OverlayItem>();
public SitesOverlay(Drawable marker) {
super(boundCenterBottom(marker));
populate();
}
private void addOverlay(OverlayItem overlayItem)
{
items.add(overlayItem);
}
@Override
protected OverlayItem createItem(int i) {
return(items.get(i));
}
@Override
protected boolean onTap(int i) {
Toast.makeText(MapMarkerActivity.this,
items.get(i).getSnippet(),
Toast.LENGTH_SHORT).show();
return(true);
}
@Override
public int size() {
return(items.size());
}
}
}