Android Google地图按关键字搜索

时间:2012-10-31 08:09:02

标签: android maps keyword

我遇到了在查询中撰写关键字的问题。我需要进行一个查询,例如,在一个查询中搜索“spord doctor”或“医生”或“药物”(& 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 =这是我的关键

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

2 个答案:

答案 0 :(得分:1)

您是否尝试过URLEncoding参数?

答案 1 :(得分:0)

String types = "restaurant|food";
try {
     types = URLEncoder.encode(types, "UTF-8");
} catch (UnsupportedEncodingException e1) {
    // TODO Auto-generated catch block
     e1.printStackTrace();
}

使用此编码器使管道与HttpGet一起工作,否则您将获得Illegar Character异常