我想在单击后删除标记,我在弹出窗口中创建了一个按钮,但是单击此按钮后,弹出窗口本身将被删除,标记仍然保留,有人可以帮助我解决此问题吗?
public class Main5Activity extends AppCompatActivity {
Button btnAllow, btnProhibit;
private String Dvisitor;
private String Dmobile;
private String Dflat;
DatabaseReference reff;
ImageView img;
private DatabaseReference Post;
static TextView textView;
String roadies;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
btnAllow = (Button) findViewById(R.id.button);
btnProhibit = (Button) findViewById(R.id.button2);
textView = (TextView) findViewById(R.id.textView5);
img = (ImageView) findViewById(R.id.imageView3);
imageshow();
init();
readonetime();
}
private void readonetime() {
Query query = Post.orderByKey().limitToLast(1);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot child: dataSnapshot.getChildren()) {
String post = dataSnapshot.child("visitor").getValue(String.class);
String post1 = dataSnapshot.child("mobile").getValue(String.class);
String post2 = dataSnapshot.child("flat").getValue(String.class);
textView.setText("Mr. "+post+"with mobile number: " + post1+"wants to visit your flat: " + post2);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void init() {
Post = FirebaseDatabase.getInstance().getReference().child("Image");
}
private void imageshow() {
reff = FirebaseDatabase.getInstance().getReference().child("Image");
reff.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Picasso.get().load(Main4Activity.URL).fit().into(img);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(Main5Activity.this, "OoooooLalalala", Toast.LENGTH_SHORT).show();
}
});
btnAllow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Main5Activity.this, Main8Activity.class);
startActivity(intent);
}
});
btnProhibit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Main5Activity.this, Main9Activity.class);
startActivity(intent);
}
});
}
}
答案 0 :(得分:0)
您通过Popup#setHTML
添加的<button>
是Popup
元素本身的子元素,因此单击按钮并使用event.target.parentNode
将引用{{1 }}本身,而不是Marker
。尽管使用Marker#setPopup
将弹出窗口与所述标记链接,但是此方法不会使popup元素成为marker元素的子元素。例如,在单击标记以显示附加的弹出窗口后,检查本示例中页面的HTML,可以观察到这一点:
Popup
如您所见,标记和弹出窗口是单独的DOM节点。
源代码here中<div id="marker" class="mapboxgl-marker mapboxgl-marker-anchor-center" tabindex="0" ... ></div>
<div class="mapboxgl-popup mapboxgl-popup-anchor-bottom" ... > ... </div>
的实现指示该方法从标记创建了对相关弹出窗口的引用,但是您可以在popup.js的实现中看到{{3} },弹出窗口没有引用标记实例。
要获得所需的效果,可以通过设置自定义类或ID,然后在单击其弹出窗口时删除具有相关ID的标记,来在标记与其弹出窗口之间创建双向链接。您可以在初始化Marker#setPopup
时使用可选的options.element
,以创建附加到标记的DOM元素的唯一ID,然后将该相同的ID与Marker
结合使用,以将标记引用为单击弹出窗口中的按钮时删除。