为什么我的标注只对最后一点有效,对其他标注无效? [英] Why my callout only work for the last point it's not working for the others?
问题描述
我已经为单点创建了标注功能,这真的很容易工作,没有任何中断,但是当我有多个点时,标注功能仅适用于最后一点,其他点不起作用我不知道为什么我在谷歌搜索了很多次,但我没有得到任何结果,以下代码适用于单点:
I already created callout function for single point it's really easy work without any interruption , but when I have multiple point the callout function work only for last point the others not working I have no idea why I searched in google many times but I didn't get any result, the below Code it's work for single point :
mMapView.setOnSingleTapListener(new OnSingleTapListener() {
private static final long serialVersionUID = 1L;
@Override
public void onSingleTap(float x, float y) {
callout.hide();
// Handles the tapping on Graphic
int[] graphicIDs = graphicsLayer.getGraphicIDs(x, y, 25);
if (graphicIDs != null && graphicIDs.length > 0) {
Graphic gr = graphicsLayer.getGraphic(graphicIDs[0]);
Point location = (Point) gr.getGeometry();
SpatialReference sp = SpatialReference
.create(SpatialReference.WKID_WGS84);
Point aux = (Point) GeometryEngine.project(location,
mMapView.getSpatialReference(), sp);
try {
DecimalFormat df = new DecimalFormat("00.000000");
String latitude = df.format(aux.getX());
String longtitude = df.format(aux.getY());
Double finallat = (Double) df.parse(latitude);
Double finallon = (Double) df.parse(longtitude);
Log.e("LLLLL", latitude + ": " + longtitude);
updateContent(
(String) gr.getAttributeValue("Rating"),
(String) gr.getAttributeValue("Title"),
(String) gr.getAttributeValue("Category"),
finallat, finallon);
callout.setOffset(0, -15);
callout.show(location, content);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
以上 onsingleTaplistener 代码,updateContent 函数代码:
the above code for onsingleTaplistener , code for updateContent function :
public void updateContent(String rating, String title, String cate,
Double finallat, Double finallon) {
if (content == null)
return;
Log.e("Double", finallat + ":" + finallon);
Cursor cur = database.showInfo(finallat, finallon);
if (cur.moveToFirst()) {
name = cur.getString(0);
cata = cur.getString(1);
vic = cur.getString(2);
}
Log.e("Name", name + ":" + cata + ":" + vic);
TextView txt = (TextView) content.findViewById(TITLE_ID);
txt.setText(name);
TextView txt1 = (TextView) content.findViewById(REVIEW_ID);
txt1.setText(cata);
TextView txt2 = (TextView) content.findViewById(CATE_ID);
txt2.setText(vic);
}
和 createCongent 函数的代码:
and code for createCongent function :
public View createContent() {
// create linear layout for the entire view
View view = LayoutInflater.from(SingleLocation.this).inflate(
R.layout.sqmi, null);
TextView titleView = (TextView) view.findViewById(R.id.county_name);
titleView.setId(TITLE_ID);
titleView.setTextColor(Color.BLACK);
TextView titleView1 = (TextView) view.findViewById(R.id.vic);
titleView1.setId(REVIEW_ID);
titleView1.setTextColor(Color.BLACK);
TextView titleView2 = (TextView) view.findViewById(R.id.cate);
titleView2.setId(CATE_ID);
titleView2.setTextColor(Color.BLACK);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Message.message(getApplicationContext(),"you clicked");
}
});
return view;
}
它对我有用,但是当我有多个点时导入相同的代码时它不起作用,请我需要您的评论,感谢您的帮助...
it was work for me but when I import the same code when I have multiple point it doesnt work, please I need you comment , thanks for any help...
推荐答案
当您将每个 Location Pin 放在单独的图形图层上时会发生此错误,请确保所有 Pins 都在同一图形图层上,因为如果它适用于一个位置,这意味着它有效,那么如果它只适用于最后一个,那么最后一个在不同的图形上希望能帮到你
This error happens when you have each Location Pin on individual graphic layers , make sure that all Pins are at the same graphic layer, because if it works for one location , it means , it works , then if it works only for the last one , it meast the last one is on the different graphic I hope it helps
这篇关于为什么我的标注只对最后一点有效,对其他标注无效?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!