【问题标题】:Google Map icon image on androidAndroid上的谷歌地图图标图像
【发布时间】:2015-04-13 21:30:04
【问题描述】:

我正在开发一个显示谷歌地图和用户创建的一些标记的应用程序。

此标记由外部数据库填充,并通过网络服务连接。

我将来自该数据库的 url 中的图像放入 MarkerOptions() .icon 中。此图像从所有标记中正确显示。但是我对 setOnInfoWindowClickListener 也有意图,如果我显示此图标图像,则意图不起作用。如果我从图标图像中删除鳕鱼,则意图正常工作。

有人可以帮我吗?

代码

public void onResume() {
    super.onResume();

    dao = new LocalizacoesDAO(context);
    ArrayList<Localizacoes> lista = dao.buscarLocalizacoes();
    if (lista.size() > 1) {
        for (int i = 0; i < lista.size(); i++) {
            URL url = null;
            try {
                url = new URL(""+lista.get(i).getImagem()+"");
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            Bitmap bmp = null;
            try {
                bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
            Bitmap bmpok = Bitmap.createScaledBitmap(bmp, 30, 30, false);

            googlemap.addMarker(new MarkerOptions()
                        .title(lista.get(i).getNome() + " " + lista.get(i).getDescricao())
                        .snippet(String.valueOf(lista.get(i).getId()))
                        .position(lista.get(i).getLatLng())
                        .icon(BitmapDescriptorFactory.fromBitmap(bmpok)));

            }
        }
    }

 googlemap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
        @Override
        public void onInfoWindowClick(Marker marker) {


            Intent intent = new Intent(MainActivity.this,infoActivity.class);
            String title = marker.getTitle().toString();
            String snippet = marker.getSnippet();

            intent.putExtra("nome", title);
            intent.putExtra("id", snippet);
            startActivity(intent);


        }
    });
}

错误

04-13 18:28:07.624    5453-5453/com.partytime.myapplication W/System.err﹕ java.net.SocketException: sendto failed: EPIPE (Broken pipe)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at libcore.io.IoBridge.sendto(IoBridge.java:475)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at java.net.PlainSocketImpl.write(PlainSocketImpl.java:508)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:270)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at java.io.BufferedOutputStream.flushInternal(BufferedOutputStream.java:185)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:85)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at libcore.net.http.FixedLengthOutputStream.flush(FixedLengthOutputStream.java:49)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:188)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118)
04-13 18:28:07.634    5453-5453/com.partytime.myapplication W/System.err﹕ at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113)
04-13 18:28:07.644    5453-5453/com.partytime.myapplication W/System.err﹕ at com.partytime.myapplication.LocalizacoesDAO.buscarIdLocalizacoes(LocalizacoesDAO.java:191)
04-13 18:28:07.644    5453-5453/com.partytime.myapplication W/System.err﹕ at com.partytime.myapplication.infoActivity.onCreate(infoActivity.java:36)
04-13 18:28:07.644    5453-5453/com.partytime.myapplication W/System.err﹕ at android.app.Activity.performCreate(Activity.java:5184)
04-13 18:28:07.644    5453-5453/com.partytime.myapplication W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
04-13 18:28:07.644    5453-5453/com.partytime.myapplication W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)
04-13 18:28:07.644    5453-5453/com.partytime.myapplication W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
04-13 18:28:07.644    5453-5453/com.partytime.myapplication W/System.err﹕ at android.app.ActivityThread.access$700(ActivityThread.java:143)
04-13 18:28:07.644    5453-5453/com.partytime.myapplication W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
04-13 18:28:07.644    5453-5453/com.partytime.myapplication W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:99)
04-13 18:28:07.644    5453-5453/com.partytime.myapplication W/System.err﹕ at android.os.Looper.loop(Looper.java:137)
04-13 18:28:07.654    5453-5453/com.partytime.myapplication W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:4963)
04-13 18:28:07.654    5453-5453/com.partytime.myapplication W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
04-13 18:28:07.654    5453-5453/com.partytime.myapplication W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:511)
04-13 18:28:07.654    5453-5453/com.partytime.myapplication W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
04-13 18:28:07.654    5453-5453/com.partytime.myapplication W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
04-13 18:28:07.654    5453-5453/com.partytime.myapplication W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
04-13 18:28:07.654    5453-5453/com.partytime.myapplication W/System.err﹕ Caused by: libcore.io.ErrnoException: sendto failed: EPIPE (Broken pipe)
04-13 18:28:07.664    5453-5453/com.partytime.myapplication W/System.err﹕ at libcore.io.Posix.sendtoBytes(Native Method)
04-13 18:28:07.664    5453-5453/com.partytime.myapplication W/System.err﹕ at libcore.io.Posix.sendto(Posix.java:146)
04-13 18:28:07.664    5453-5453/com.partytime.myapplication W/System.err﹕ at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
04-13 18:28:07.664    5453-5453/com.partytime.myapplication W/System.err﹕ at libcore.io.IoBridge.sendto(IoBridge.java:473)
04-13 18:28:07.674    5453-5453/com.partytime.myapplication W/System.err﹕ ... 25 more
04-13 18:28:07.674    5453-5453/com.partytime.myapplication D/AndroidRuntime﹕ Shutting down VM
04-13 18:28:07.674    5453-5453/com.partytime.myapplication W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41ed6438)
04-13 18:28:07.684    5453-5453/com.partytime.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.partytime.myapplication/com.partytime.myapplication.infoActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2114)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
            at android.app.ActivityThread.access$700(ActivityThread.java:143)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4963)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.partytime.myapplication.infoActivity.onCreate(infoActivity.java:37)
            at android.app.Activity.performCreate(Activity.java:5184)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
            at android.app.ActivityThread.access$700(ActivityThread.java:143)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4963)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
            at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

    标签: android image google-maps android-intent


    【解决方案1】:

    所以,错误说:

         Caused by: java.lang.NullPointerException
            at com.partytime.myapplication.infoActivity.onCreate(infoActivity.java:37)
    

    所以应该和infoActivity有关

    其中一个可能的原因是您传递的字符串为空,而 infoActivity 正在获取字符串并尝试访问该值。

    Intent intent = new Intent(MainActivity.this,infoActivity.class);
    intent.putExtra("nome", title);
    intent.putExtra("id", snippet);
    

    如果是这个原因,你可以检查 infoActivity 中的字符串。

    Intent intent= getIntent();
    String title = intent.getExtra("nome");
    String id = = intent.getExtra("id");
    
    if (id == null || title == null) 
       // Exception
    

    【讨论】:

    • 我在 infoActivity 中收到的唯一值是 id...因为,有了这个 id,我选择显示该 id 的所有信息...如果我只是删除代码以显示地图上的图像,应用程序正常工作并且不会崩溃...如果我将代码显示图标图像,应用程序会因错误而崩溃
    • 所以在使用前检查id是否为空。
    • 我认为不需要检查...因为如果删除图标图像它会起作用...所以 id 不为空
    • 对不起,我没有尝试检查,如果我删除地图上的图标图像会起作用......默认的谷歌地图标记(HUE_RED)工作正常......只有我的图标图像不起作用: (
    • 您的 id 正在从中获得价值。它与标记有关。也许这给出了空值。字符串 sn-p = marker.getSnippet(); intent.putExtra("id", sn-p);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 2014-02-01
    相关资源
    最近更新 更多