【问题标题】:Android Google Maps search by keywordsAndroid 谷歌地图按关键字搜索
【发布时间】:2012-10-31 08:09:02
【问题描述】:

我在查询中遇到了关键字组成的问题。我需要进行一个查询,例如,在一个查询中按“spord doctor”或“doctors”或“medicine”进行搜索(&keywod="sport doctor"|"medicine"|"sport"|"doctor"。这个查询不起作用,但如何正确执行此操作)。我无法在一个查询中编写它。是否有任何解决方案如何做到这一点,因为在文档中我只看到一个示例,其中通过一个关键字或短语进行搜索。最后,我想做一个长查询,不同语言的“运动医生”在哪里。

我找到了解决方案。但它在浏览器 URL 栏中工作,而不是在应用程序中工作。我用管道“|”作为查询中的 OR 语句:https://maps.googleapis.com/maps/api/place/search/json?location=59.436347,24.752356&radius=34572.53586&keyword=spordiarst|sport&sensor=false&key=AIzaSyCEVB4rY2A_AEyJ5JeopxaGz4zqm47yLuY

但如果我输入这样的内容,我的应用程序就会出错:

HttpUriRequest request = new HttpGet("https://maps.googleapis.com/maps/api/place/search/json?" + 
            "location=" + ((lat == 0 || lat == gpsLat) ? gpsLat : lat) + ","+ ((lon == 0 || lon == gpsLon) ? gpsLon : lon) +
            "&radius=" + radius +
            "&keyword=\"spordiarst\"|\"sport\"" +
            "&types=establishment" +
            "&sensor=false&" +
            "key=" + GOOGLE_MAPS_KEY);

错误:原因:java.lang.IllegalArgumentException:索引 127 处的查询中存在非法字符:https://maps.googleapis.com/maps/api/place/search/json?location=59.435330809999996,24.7727237&radius=1404.114013671875&keyword="spordiarst"|"sport"&types=establishment&sensor=false&key=这是我的钥匙

如何解决?如我所见,没有空格和特定符号,但它崩溃了。似乎是由于管道“|”或双引号 \".

【问题讨论】:

标签: android maps keyword


【解决方案1】:

你试过URLEncoding的参数吗?

【讨论】:

    【解决方案2】:
    String types = "restaurant|food";
    try {
         types = URLEncoder.encode(types, "UTF-8");
    } catch (UnsupportedEncodingException e1) {
        // TODO Auto-generated catch block
         e1.printStackTrace();
    }
    

    使用此编码器使管道与 HttpGet 一起工作,否则会出现非法字符异常

    【讨论】:

      猜你喜欢
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 2013-05-02
      相关资源
      最近更新 更多