在我的应用程序中,我使用的是谷歌地图,首先我是通过标记显示用户当前的位置,并通过一个透明的圆圈显示其准确性,现在当我想添加另一个标记到代表我以前的位置的同一点时,相同的代码对我不起作用,请有人帮我找出代码的错误,我只是想在一个地图视图中添加多个标记
下面是我用来显示两个标记的代码:-
LocationResult locationResult = new LocationResult(){
@Override
public void gotLocation(Location location){
//Got the location!
if (location != null) {
GeoPoint point = new GeoPoint(
(int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));
accuracy = location.getAccuracy();
cur_lati = location.getLatitude();
cur_longi = location.getLongitude();
String address = "";
Geocoder geoCoder = new Geocoder(
getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(
point.getLatitudeE6() / 1E6,
point.getLongitudeE6() / 1E6, 1);
if (addresses.size() > 0) {
for (int index = 0;
index < addresses.get(0).getMaxAddressLineIndex(); index++)
address += addresses.get(0).getAddressLine(index) + " ";
}
}catch (IOException e) {
e.printStackTrace();
}
Input.setPinPoints(cur_lati,cur_longi,address); // sending lat,lon to input class
Toast.makeText(getBaseContext(),"Latitude: " + location.getLatitude() + " Longitude: " + location.getLongitude() + "accuracy" + location.getAccuracy(),Toast.LENGTH_SHORT).show();
mc = mapView.getController();
mc.animateTo(point);
mc.setZoom(19);
MapOverlay mapOverlay = new MapOverlay();
mapOverlay.setPointToDraw(point);
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
Bundle bundle=getIntent().getExtras();
if(bundle!=null){
int value = bundle.getInt("tab_value");
lati = bundle.getDouble("lati");
longi = bundle.getDouble("longi");
//GeoPoint point1 = new GeoPoint((int) lati, (int) longi);
if(value == 1){
MapOverlay1 mapOverlay1 = new MapOverlay1();
// mapOverlay1.setPointToDraw(point1);
List<Overlay> listOfOverlays1 = mapView.getOverlays();
listOfOverlays1.add(mapOverlay1);
}
}
}
}
};
MyLocation myLocation = new MyLocation();
myLocation.getLocation(this, locationResult);
btnimg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(getApplicationContext(),Input.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_safe_city, menu);
return true;
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
@Override
public void finish() {
// TODO Auto-generated method stub
super.finish();
}
class MapOverlay extends Overlay
{
private GeoPoint pointToDraw;
public void setPointToDraw(GeoPoint point) {
pointToDraw = point;
}
public GeoPoint getPointToDraw() {
return pointToDraw;
}
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
super.draw(canvas, mapView, shadow);
// convert point to pixels
Point screenPts = new Point();
Paint mPaintBorder,mPaintFill ;
mapView.getProjection().toPixels(pointToDraw, screenPts);
// add marker
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pinimage);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 24, null);
mPaintBorder = new Paint();
mPaintBorder.setStyle(Paint.Style.STROKE);
mPaintBorder.setAntiAlias(true);
mPaintBorder.setColor(0xee4D2EFF);
mPaintFill = new Paint();
mPaintFill.setStyle(Paint.Style.FILL);
mPaintFill.setColor(0x154D2EFF);
int radius = (int) mapView.getProjection().metersToEquatorPixels(accuracy);
canvas.drawCircle(screenPts.x, screenPts.y, radius, mPaintBorder);
canvas.drawCircle(screenPts.x, screenPts.y, radius, mPaintFill);
return true;
}
}
class MapOverlay1 extends com.google.android.maps.Overlay
{
private GeoPoint p1 = new GeoPoint((int)(lati),(int)(longi));
Projection projection;
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
Point screenPts1 = new Point();
mapView.getProjection().toPixels(p1, screenPts1);
//---add the marker---
Bitmap bmp1 = BitmapFactory.decodeResource(getResources(), R.drawable.car);
canvas.drawBitmap(bmp1, screenPts1.x, screenPts1.y-50, null);
return true;
}
}
通过使用MapOverlay类,我可以在地图上放置一个显示用户当前位置的pin,但当我使用MapOverlay1显示第二个标记时,它不起作用....
任何帮助都是值得感激的事先感谢......
切换到谷歌地图的新API。用起来好多了。如果必须使用旧的API,请为当前位置使用MyLocationOverlay。另外,如果我没记错的话,有一个set/getMarker方法耦合,它省去了你自己在画布上绘制标记的麻烦。
我调用API,然后将JSON数据添加到arraylist中,然后调用arraylist数据,并将纬度和经度放置在地图上,放置多个标记。我相信我的问题是从ArrayList获取字符串,但我不知道如何解决它。 我正在从另一个类调用API 私有GoogleMap mMap;
我想在谷歌地图上显示多个标记。我的坐标是从解析数据库中提取的,但我无法看到标记。我的第二个问题是,我想显示一个标题是餐厅名称与标记,我如何做? 这是我的代码: 请帮帮我。
我正在尝试生成一个带有授权标头的HTTP请求: 但此代码生成的请求不包含授权头: Cache-Control:无缓存 access-control-request-method: 来源:http://localhost:3021 接受语言:en-US,en;q=0.8,he;q=0.6 我做错了什么?
无法在pom中添加父标记。xml如下所示。它不断给我一个错误,说“Project'org.springframework.boot:springboot:2.3.2.RELEASE'not found检查信息:检查Maven模型的解决问题。”有人能帮忙吗?
我目前正在转换一个项目从。NET框架进入。网5. 当我到达新系统中的一个endpoint时。NET5项目我得到以下异常。 系统InvalidOperationException:'误用的标头名称,'访问控制允许源'。确保请求头与HttpRequestMessage一起使用,响应头与HttpResponseMessage一起使用,内容头与HttpContent对象一起使用。” endpoint看起来
我是新来的反应,并试图理解为什么我不能添加超文本标记语言到我的渲染方法 如果我添加