- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须在特定点的 map 上放置一些叠加层,我从 API 获取点坐标。我在异步任务中进行抓取。我成功地放置了叠加层,当我放大 map 或跨越它时,响应非常慢。这是我的 overlayitem 类和我的异步任务
public class Marker extends ItemizedOverlay<OverlayItem> {
private Context con;
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
public Marker(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
// TODO Auto-generated constructor stub
}
public Marker(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker));
con=context;
// TODO Auto-generated constructor stub
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return mOverlays.get(i);
}
@Override
public int size() {
// TODO Auto-generated method stub
return mOverlays.size();
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
}
...
private class TeleportdAPIParser extends AsyncTask<Void, Object, Void> {
private final HttpTransport http= AndroidHttp.newCompatibleTransport();
private HttpRequestFactory fact;
private HttpRequest request;
private HttpResponse response;
private String urlString;
private JsonFactory jsonFactory;
private JsonParser jp;
MapView mapView;
Marker marker;
List<Overlay> mapOverlays;
ImageAdapter adapter;
@Override
protected void onPreExecute() {
super.onPreExecute();
mapView=(MapView) findViewById(R.id.mapView);
Drawable drawable = getResources().getDrawable(R.drawable.puce);
marker = new Marker(drawable);
mapOverlays = mapView.getOverlays();
adapter=new ImageAdapter();
GridView gridview=(GridView) findViewById(R.id.gridView);
}
@Override
protected Void doInBackground(Void... params) {
fact=http.createRequestFactory();
jsonFactory = new JsonFactory();
TPortItem tpi= new TPortItem();
TPortItemList tpl=new TPortItemList();
urlString="http://v1.api.teleportd.com:8080/search?apikey=1c5a31ccf46c54572e484e103c97239bd&loc=%5B48.87,2.34,5.0,5.0%5D";
try {
//urlString=URLEncoder.encode(urlString,"UTF-8");
request = fact.buildGetRequest(new GenericUrl(urlString));
HttpHeaders header=new HttpHeaders();
header.setAcceptEncoding("gzip");
request.setHeaders(header);
response = request.execute();
jp = jsonFactory.createJsonParser(new BufferedInputStream(response.getContent()));
while(jp.nextValue()!=JsonToken.NOT_AVAILABLE){
jp.nextValue();
while(jp.getCurrentToken()!=JsonToken.END_OBJECT && jp.getCurrentToken()!=null){
if(jp.getCurrentName().equals("sha")){
tpi.sha=jp.getText();
}
if(jp.getCurrentName().equals("date")){
tpi.date=jp.getIntValue();
}
if(jp.getCurrentName().equals("age")){
tpi.age=jp.getIntValue();
}
if(jp.getCurrentName().equals("thumb")){
tpi.thumb=jp.getText();
if(adapter.URLS.size()<10)
adapter.URLS.add(tpi.thumb);
}
if(jp.getCurrentName().equals("rank")){
tpi.rank=jp.getIntValue();
}
if(jp.getCurrentName().equals("grade")){
tpi.grade=jp.getIntValue();
}
if(jp.getCurrentName().equals("loc")){
jp.nextValue().toString();
tpi.loc[0]=(int) (jp.getFloatValue()*1E6);
jp.nextValue().toString();
tpi.loc[1]=(int) (jp.getFloatValue()*1E6);
jp.nextValue();
publishProgress(new GeoPoint (tpi.loc[0],tpi.loc[1]));
}
jp.nextValue();
}
//tpl.i.add(new TPortItem(tpi.sha, tpi.loc,tpi.age, tpi.date,tpi.thumb, tpi.rank, tpi.grade));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Object... values) {
super.onProgressUpdate(values);
marker.addOverlay(new OverlayItem((GeoPoint) values[0], "Hola, Mundo!", "I'm in Mexico City!"));
mapOverlays.add(marker); // adding the whole overlays (list) on the maps
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
mapView.invalidate();
//gridview.setAdapter(adapter);
}
}
最佳答案
MapView 可以处理的叠加项数量是有限制的。没有关于此限制的官方消息,但一段时间后,您会在缩放/平移期间看到缓慢的行为。
一些解决方案是:
关于Android ItemizedOverlay<OverlayItem> 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7927185/
那是我的代码: OverlayItem overlayItem = new OverlayItem(point, "Test", "Hello"); itemizedOverlay.addOverla
我希望能够获得一些对正在绘制的当前对象的引用 @Override public void draw(Canvas canvas, MapView mapView,boolean sha
我正在使用 OSMdroid。 感谢这篇文章,我成功了 Adding Overlay to OSMDROID在特定位置创建叠加静态项目。 现在我正在尝试使 map 更加动态。因此,当位置发生变化时,O
我必须在特定点的 map 上放置一些叠加层,我从 API 获取点坐标。我在异步任务中进行抓取。我成功地放置了叠加层,当我放大 map 或跨越它时,响应非常慢。这是我的 overlayitem 类和我的
我想在我的 map 上显示不同的标记。我能找到的一种解决方案是为每个标记定义一个新的叠加层。但后来我发现用 可以更容易地完成 OverlayItme.set Marker(Drawable marke
我有一个简单的 Google map 叠加层:http://pastebin.com/Rg8miMSh我根据缩放级别在其上添加/删除项目。删除/添加后,我在叠加层上调用 populate 并在 map
我正在用单个 ItemizedOverlay 中的几十个 OverlayItem 构建 map 。我的 map 可以非常近地查看(大约 18+ 缩放级别),OverlayItems 彼此非常接近。放大
我创建了一个自定义的 OverlayItem 类,这样我基本上可以拥有一种 OverlayItem,其 Drawable 标记会根据我传递给它的某些数据的状态自行设置。 我试图通过在我的第一次尝试中使
我有一个类,它扩展了 OverlayItem 以包含更多字段。我已经使用 PointOfInterest 类更改了程序中出现的所有 OverlayItem。 当我尝试运行适用于 OverlayItem
如何从 OverlayItem 打开 Activity:现在这是我的代码: @Override protected boolean onBalloonTap(int index) { if (
我在获取某个 OverlayItem 正在使用的可绘制对象时遇到了一些麻烦,因此我可以计算它的高度并正确偏移显示 onTap 的注释。这是我尝试获取该可绘制对象的代码: Drawable marker
我有一个使用 mapview-overlay-manager 的应用程序使用 Web API 中的 LazyLoadManager 在 MapView 上绘制 map 标记的代码。当我拖动 map 时
我正在开发 android 应用程序,我能够使用 ItemizedOverlay 在 map 上显示多个图标,我还实现了 ItemizedOverlay 的 onTap(int index) 方法以在
我有一个可用的 MapView,上面有 Overlays。我已经完成了官方 MapView-Tutorial:http://developer.android.com/guide/tutorials/
我正在开发 MapView 应用程序,并想在程序中放置一个漂亮的小复活节彩蛋。我想要做的是有一个基本上不可见的叠加项,但是当点击时会触发一个事件来显示 View 。 现在在 iPhone 上,我通过在
我在使用 Android MapView API 时遇到了一些问题。我从要在 MapView 中显示的数据库中获取 OverlayItems。如果我显示 100 个图标,我没有问题,但如果它变得更多—
首先,我在这里继承了很多代码,虽然我已经梳理了几次以寻找这种行为的原因,但我很困惑。 我希望最后点击的 OverlayItem 位于其余部分之上,即使它看起来很傻。我看到的是,虽然 MapView 正
在我的应用中有一个MapView,我给它添加了OverlayItems,大约500个,但以后会更多甚至数千个... 我的问题是:当我切换到此 Activity 时,我遇到了 3-4 秒的大量停电,然后
我有一个 map View ,其中在不同的地址上绘制了多个图钉。一切都很好。当您有多个项目指向同一个地址时,就会出现问题。例如, 单元 1/45 ABC 街,XYZ XYZ ABC 街 45 号单元
我想进一步注释我放置在 MapView 上的自定义标记(使用 ItemizedOverlay),方法是显示一个简单的文本标签,该标签在触发 onTap 事件时针对特定项目显示。 这是 Google M
我是一名优秀的程序员,十分优秀!