2

緯度と経度に基づいて動的に生成されるいくつかのマーカーを使用して地図を表示しています。

ImageView と TextView を使用して、マーカーをクリックすると表示されるカスタム情報ウィンドウを使用しています。

map.setInfoWindowAdapter(new InfoWindowAdapter() {
        @Override
        public View getInfoWindow(Marker marker) {
            return v;
        }
        @Override
        public View getInfoContents(Marker marker) {
            v = getLayoutInflater().inflate(R.layout.info_window_layout,
                    null);

            Bitmap myBitmap;
            try {
                URL url = new URL(
                        "URL here");
                HttpURLConnection connection = (HttpURLConnection) url
                        .openConnection();

                connection.setDoInput(true);

                connection.connect();
                connection.setReadTimeout(120000);
                InputStream input = connection.getInputStream();
                myBitmap = BitmapFactory.decodeStream(input);

            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
            ImageView imgPhoto = (ImageView) v
                    .findViewById(R.id.imageView1);
            tvPropertyID = (TextView) v.findViewById(R.id.textView1);
            imgPhoto.setImageBitmap(myBitmap);          
            return v;
        }
    });

    map.setOnMarkerClickListener(this);


and Dynamically placing markers like this,

 protected void placeMarker(final List<PropertiesList> PropertyStub) {

    for (int i = 0; i <= PropertyStub.size() - 1; i++) {
        final LatLng MeanLatLng = new LatLng(PropertyStub.get(i).Latitude,
                PropertyStub.get(i).Longitude);

        if (!visibleMarkers.containsKey(PropertyStub.get(i).PropertyID)) {
            visibleMarkers
                    .put(PropertyStub.get(i).PropertyID,
                            this.map.addMarker(new MarkerOptions()
                                    .position(MeanLatLng)
                                    .title("Property")

                                    .icon(BitmapDescriptorFactory
                                            .fromResource(R.drawable.pink_outside_marker))));
        }
    }
}

ここでは、ハッシュマップを使用して、ユーザーがクリックしたマーカーを追跡し、場所や PropertyID などのフィールドに基づいて、それに応じて画像とテキストを表示しています。

onMarkerClick、

View v;
public boolean onMarkerClick(Marker marker) {
    Log.d("", "On marker click");
    Log.d("", "VisibleMarkerText: " + visibleMarkers.get(marker));
    tvPropertyID = (TextView) v.findViewById(R.id.textView1);
    tvPropertyID.setText("" + visibleMarkers.get(marker));

    return true;
}

map.setInfoWindowAdpater() で「v」をインスタンス化しています。

この行で「tvPropertyID = (TextView) v.findViewById(R.id.textView1);」nullポインター例外が発生します。そして、「visibleMarkers.get(marker)」の値をnullとして取得しているだけではありません。

これは私のlogcatです。

 06-18 12:39:26.812: E/AndroidRuntime(19018): FATAL EXCEPTION: main
 06-18 12:39:26.812: E/AndroidRuntime(19018): java.lang.NullPointerException
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at com.bu.PropertySearchTypes.MapSearch.onMarkerClick(MapSearch.java:230)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at com.google.android.gms.maps.GoogleMap$4.f(Unknown Source)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at com.google.android.gms.internal.bp$a.onTransact(Unknown Source)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at android.os.Binder.transact(Binder.java:279)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at bds.a(SourceFile:84)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at maps.aj.bk.a(Unknown Source)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at maps.as.d.a(Unknown Source)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at maps.as.p.c(Unknown Source)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at maps.as.o.a(Unknown Source)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at maps.as.bo.c(Unknown Source)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at maps.as.bk.onSingleTapConfirmed(Unknown Source)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at maps.bs.g.onSingleTapConfirmed(Unknown Source)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at maps.bs.i.handleMessage(Unknown Source)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at android.os.Handler.dispatchMessage(Handler.java:99)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at android.os.Looper.loop(Looper.java:130)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at android.app.ActivityThread.main(ActivityThread.java:3687)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at java.lang.reflect.Method.invokeNative(Native Method)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at java.lang.reflect.Method.invoke(Method.java:507)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
 06-18 12:39:26.812: E/AndroidRuntime(19018):   at dalvik.system.NativeStart.main(Native Method)

だれか訂正してください。これ以上はわかりません。どんな助けでも大歓迎です!!

4

1 に答える 1