0

ここでエラー関連のコードとログを投稿すると、問題は map api v2 を使用して場所を表示しようとしていますが、データを URL に送信するとこの例外が発生するため、リクエストの送信に問題があると思いますが、このようなJSON データが得られました。

    10-03 19:45:41.422: W/System.err(27832): java.lang.IllegalArgumentException: Illegal character in query at index 128: https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=21.21544712,81.32074942&radius=1000&sensor=true&types=food|bar|club&key=something
10-03 19:45:41.422: W/System.err(27832):    at java.net.URI.create(URI.java:727)
10-03 19:45:41.422: W/System.err(27832):    at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
10-03 19:45:41.422: W/System.err(27832):    at com.tukutane.StartActivity$GetPlaces.doInBackground(StartActivity.java:220)
10-03 19:45:41.422: W/System.err(27832):    at com.tukutane.StartActivity$GetPlaces.doInBackground(StartActivity.java:1)
10-03 19:45:41.422: W/System.err(27832):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-03 19:45:41.422: W/System.err(27832):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-03 19:45:41.422: W/System.err(27832):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-03 19:45:41.432: W/System.err(27832):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
10-03 19:45:41.432: W/System.err(27832):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10-03 19:45:41.432: W/System.err(27832):    at java.lang.Thread.run(Thread.java:856)

コード:

    // build places query string
                    String placesSearchStr = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?"
                            + "location="
                            + mCurrentLocation.getLatitude()
                            + ","
                            + mCurrentLocation.getLongitude()
                            + "&radius=1000&sensor=true"
                            + "&types=food|bar|club"
                            + "&key=xxxxxxxx";
                    // execute query
                    new GetPlaces().execute(placesSearchStr);
        // Move the camera instantly to User location with a zoom of 12.
        googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                USER_LOCATION, 12));

        // Zoom in, animating the camera.
        googleMap.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
4

1 に答える 1

2

インデックス 128 のクエリに不正な文字があります: ...

これは、文字列に不正な文字が含まれていることを意味します。あなたの場合、それはパイプ(|)です。文字を として URL エンコードする必要があります%7C。投稿したリンクにアクセスすると、そこにもそのように表示されていることがわかります。

これは手動で行うか、次の方法で行うことができますURLEncoder

+ "&types=food%7Cbar%7Cclub"

また

+ "&types=" + URLEncoder.encode("food|bar|club", "utf-8")
于 2013-10-03T19:56:08.950 に答える