将多个标签添加到标记 [英] Add multiple tags to marker

查看:55
本文介绍了将多个标签添加到标记的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

创建了我的答案模型.在标记中还添加了标签:

Created i model like in answer. Also added tags in markers:

 MarkerTag tag = new MarkerTag();
    Marker marker = map.addMarker(new MarkerOptions()
            .position(new LatLng(47.045029, 28.861427))
            .title("Marker")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
            .snippet("Population: 4,137,400"));
    tag.setEmail("first@gmail.com");
    tag.setPhoneNumber("+37369490007");
    marker.setTag(tag);
    Marker marker2 = map.addMarker(new MarkerOptions()
            .position(new LatLng(47.000327, 28.867950))
            .title("Marker")
            .snippet("Population: 4,137,400 fdfsfsfsdfsfdsfsfssfsfsfsfsfs"));
    tag.setEmail("second@gmail.com");
    tag.setPhoneNumber("+37368750588");
    marker2.setTag(tag);
    Marker marker3 = map.addMarker(new MarkerOptions()
            .position(new LatLng(47.024204, 28.889236))
            .title("Marker")
            .snippet("Population: 4,137,400 /n dasdasdas d"));
    tag.setEmail("three@gmail.com");
    tag.setPhoneNumber("+37369339092");
    marker3.setTag(tag);

并添加了我的方法:

private void makeCall(Marker marker) {
    MarkerTag tag = ((MarkerTag)marker.getTag());
    if (tag != null) {
        Intent call = new Intent(Intent.ACTION_DIAL);
        call.setData(Uri.parse("tel:" + String.valueOf(tag.getPhoneNumber())));
        startActivity(call);
    }
}
private void sendEmail(Marker marker) {
    MarkerTag tag = ((MarkerTag)marker.getTag());
    if (tag != null) {
        Intent intent = new Intent(Intent.ACTION_SENDTO);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
        intent.putExtra(Intent.EXTRA_TEXT, "text");
        intent.setData(Uri.parse("email:" + String.valueOf(tag.getEmail())));
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        checkAndStart(this, intent, R.string.action_settings);
    }
}

但是现在当我按下标记时,我只会得到一个数字,这个

But now when i press on markers i get just one number, this

37369339092当我尝试发送电子邮件时,我发现了错误:233 26548-26548/com.vm.sai E/AndroidRuntime:FATAL EXCEPTION:main流程:com.vm.sai,PID:26548java.lang.NullPointerException:尝试调用虚拟方法'java.lang.Object com.google.android.gms.maps.model.Marker.getTag()'在空对象引用上在com.vm.sai.activities.MapsActivity.sendEmail(MapsActivity.java:168)在com.vm.sai.activities.MapsActivity.-wrap1(MapsActivity.java)在com.vm.sai.activities.MapsActivity $ 2.onClickConfirmed(MapsActivity.java:92)在com.vm.sai.utils.OnInfoWindowElemTouchListener $ 1.run(OnInfoWindowElemTouchListener.java:84)在android.os.Handler.handleCallback(Handler.java:815)在android.os.Handler.dispatchMessage(Handler.java:104)在android.os.Looper.loop(Looper.java:194)在android.app.ActivityThread.main(ActivityThread.java:5637)在java.lang.reflect.Method.invoke(本机方法)在java.lang.reflect.Method.invoke(Method.java:372)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:959)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)

37369339092 and when i try to send email i catched the error : 233 26548-26548/com.vm.sai E/AndroidRuntime: FATAL EXCEPTION: main Process: com.vm.sai, PID: 26548 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object com.google.android.gms.maps.model.Marker.getTag()' on a null object reference at com.vm.sai.activities.MapsActivity.sendEmail(MapsActivity.java:168) at com.vm.sai.activities.MapsActivity.-wrap1(MapsActivity.java) at com.vm.sai.activities.MapsActivity$2.onClickConfirmed(MapsActivity.java:92) at com.vm.sai.utils.OnInfoWindowElemTouchListener$1.run(OnInfoWindowElemTouchListener.java:84) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5637) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)

推荐答案

.setTag()接受对象.因此,为了在其中添加更多信息,您只需要创建自己的TagObject,就可以将其称为MarkerTag;

The .setTag() accept an object. So, in order to add more information in there you just have to create your own TagObject, lets call it MarkerTag;

public class MarkerTag {


    private String email;
    private String phoneNumber;

    public MarkerTag() {

    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

然后,您只需将其作为标记添加到标记中即可

Then you just add it to your marker as a tag:

MarkerTag yourMarkerTag = new MarkerTag();
yourMarkerTag.setEmail("someemail@gmail.com");
yourMarkerTag.setPhoneNumber("+15552345353");
marker.setTag(yourMarkerTag);

现在要找回它,您只需确保获得正确的

Now to get it back you just have to make sure that you are getting the right

    if(null != marker.getTag()){
    if(marker.getTag() instanceof MarkerTag){
        MarkerTag yourMarkerTag = ((MarkerTag)marker.getTag());
        Toast.makeText(getActivity, yourMarkerTag.getEmail() , Toast.LENGTH_SHORT).show();
        Toast.makeText(getActivity, yourMarkerTag.getPhoneNumber() , Toast.LENGTH_SHORT).show();
    }
}

这篇关于将多个标签添加到标记的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆