我有一些我从互联网上下载的信息(文本和小的img),我想在我点击myMarkers类时显示它在气泡中。我希望这幅画既能画出风景,又不能画出风景。
问题
当应用程序是肖像的,当我杀死应用程序并重新运行它时,一切都在工作(当我点击时,我看到带有文本和img的气泡)。当我转向景观,当我的应用程序是不可见的,但活的,地图恢复标记,但当我点击他们,他们不显示气泡。
代码
这里是我的标记实现,它实现parcelable
,以便在我的活动转到onPause()时调用onSaveInstanceState
时将它们保存到bundle
中(省略的空重写方法):
class myMarker extends Marker implements Parcelable{
public myMarker(MapView mapView) {
super(mapView);
}
public Parcelable.Creator<myMarker> CREATOR = new Parcelable.Creator<myMarker>() {
public myMarker createFromParcel(Parcel in) {
return new myMarker(map);
}
public myMarker[] newArray(int size) {
return new myMarker[size];
}
};
}
在我们的活动中的oncreate()
中:
if (savedInstanceState != null) {
// Restore myMarkers
markers = savedInstanceState.getParcelableArrayList("MARKERS");
for (int i=0;i<markers.size();i++){
map.getOverlays().add(markers.get(i));
Marker m=markers.get(i);
}
map.invalidate();
}
else {
markers=new ArrayList<myMarker>();
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current state
savedInstanceState.putParcelableArrayList("MARKERS", markers);
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
我做错了什么?我错过了什么?谢谢
我下定决心
我认为有一个问题。每次将设备打开landscape时,标记
的MarkerInfowIndow
都有一个对上下文
的旧引用,这就是为什么单击时不会显示气泡的原因。(也许可以用碎片修复...)
只需重写类,当重新创建标记时,只需将新引用传递给上下文。
代码:
public class myMarker extends Marker implements Parcelable{
InfoWindow i;
MapView map;
static Context context=null;
static MarkerInfoWindow ma=null;
public myMarker(MapView mapView) {
super(mapView);
Context c=mapView.getContext();
/*IF THE CONTEXT CHANGES, I KEEP MY NEW (RECREATED) mapView AND I SET A NEW static
MarkerInfoWindow OTHERWISE AT ANY CASE I SET THE static markerInfoWindow TO THE MARKER */
if(context==null||context!=c){
i=super.mInfoWindow;
map=mapView;
context=c;
String packageName=context.getPackageName();
int layoutResId=context.getResources().getIdentifier("layout/bonuspack_bubble",null,packageName);
ma=new MarkerInfoWindow(layoutResId, mapView);
}
super.setInfoWindow(ma);
}
...
}
和onRestore,当您在景观中重新加载地图时,在onSave之后:
/*@ onRestore i keep my old markers and i create new markers with same info but with new mapView(new Context)*/
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState != null) {
/*NEW MARKERS EQUALS TO THE OLD BUT WITH NEW MAP (NEW CONTEXT)
...AND NO YOU CANT JUST UPDATE THE CONTEXT*/
ArrayList<myMarker> markers2;
markers2 = savedInstanceState.getParcelableArrayList("MARKERS");
if(markers2!=null){
for (int i=0;i<markers2.size();i++){
myMarker m=new myMarker(map);
m.setTitle(markers2.get(i).getTitle());
m.setImage(markers2.get(i).getImage());
m.setPosition(markers2.get(i).getPosition());
m.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
markers.add(m);
map.getOverlays().add(m);
}
}
map.invalidate();
}
else markers=new ArrayList<myMarker>();
}
我显示了一个标记来显示用户的位置,这是通过电话GPS获得的,并且我添加了一个FolderOverlay来分组其他标记(这些标记表示使用自定义API检索的Wikipedia中的POI)。 我在我的项目中包含了bonuspack_bubble.xml布局文件,因为我想修改它以适当地缩放“More Info”按钮。 问题 谢谢! 注意:使用osmbonuspack V5.3(AAR)、osmdroid
Tei正在尝试用OSM地图取代我应用程序中的谷歌地图。我一直试图通过学习他们如何使用JitPack安装和导入项目来使用这一点。工作很好。点击标记时,会显示默认信息气泡(一些浅灰色的)。如果我想修改标记气泡的背景,我应该怎么做?我没有在代码中使用任何类型的onClick方法 任何建议都将得到高度赞赏!
我无法使用OSMbonuspack标记,因为无法识别导入 给出的错误不能解析符号“marker”,尽管项目中有osmdroid(v5.6.4)和osmbonuspack(v6.3)。 有没有人知道这为什么不行?
我正在学习Jupyter笔记本的降价单元格,并尝试使用以下代码为我的一本笔记本创建一个简单的深红色标题: 在Jupyter笔记本中,当我运行单元格时,这变成了一个深红色的标题,正如预期的那样,这里有一个大纲:http://datascience.ibm.com/blog/markdown-for-jupyter-notebooks-cheatsheet/. 当我将笔记本上传到GitHub时,我的J
这个代码过去是有效的,但我不确定我改变了什么,或者在传单中改变了什么来打破它,但没有显示标记。数据正确返回,正在创建标记对象,但未显示任何标记。我在这里不知所措。使用0.7.2。让我给你看看代码。。。 } 一切都应该很好。服务器正确返回信息。列表中始终有13项(预期行为),我将plostlist[I]的内容以及plotmarker对象打印到控制台。 以下是plotlist[i]的输出: 一切看起来
我希望将行插入到表中,但这些行被回显,但没有显示在表中。 项目的HTML代码为: 项目的main.js文件是:它从下面的PHP文件中取数据: 项目的PHP代码是: