Google maps api 3 Elasticsearch geo_bbox和Google Places API视口位置
希望我能解释我的问题 我正在使用谷歌的自动完成来获得一个人的目的地。一旦我有了目标,我就可以使用google的PlaceAPI来查找几何体视口。但是视口是从北/东到南/西。我的问题是Elasticsearch的geo_bbox从上/左到下/右进行搜索。见下面的例子 Google Place API响应:Google maps api 3 Elasticsearch geo_bbox和Google Places API视口位置,google-maps-api-3,
elasticsearch,google-places-api,Google Maps Api 3,
elasticsearch,Google Places Api,希望我能解释我的问题 我正在使用谷歌的自动完成来获得一个人的目的地。一旦我有了目标,我就可以使用google的PlaceAPI来查找几何体视口。但是视口是从北/东到南/西。我的问题是Elasticsearch的geo_bbox从上/左到下/右进行搜索。见下面的例子 Google Place API响应: { "html_attributions" : [], "result" : { "address_components" : [ {
{
"html_attributions" : [],
"result" : {
"address_components" : [
{
"long_name" : "Devon",
"short_name" : "Devon",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "England",
"short_name" : "England",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United Kingdom",
"short_name" : "GB",
"types" : [ "country", "political" ]
}
],
"adr_address" : "\u003cspan class=\"region\"\u003eDevon\u003c/span\u003e, \u003cspan class=\"country-name\"\u003eUK\u003c/span\u003e",
"formatted_address" : "Devon, UK",
"geometry" : {
"location" : {
"lat" : 50.77721349999999,
"lng" : -3.9994610
},
"viewport" : {
"northeast" : {
"lat" : 51.24619840,
"lng" : -2.88664060
},
"southwest" : {
"lat" : 50.20189620,
"lng" : -4.68065630
}
}
},
"icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
"id" : "065fb13848aeae653fe25ee19d8a0a0289bd64dc",
"name" : "Devon",
"reference" : "CnRoAAAAN84gxrolBJLF_flpuwIyGum7pjln_KP9NJIHydIHMfbAo93nUdHSyYbv90GPUlW8Jx5D2ba-2fJHyzcHAdkZLkaJzSBEfj7dkR4NnBWzK9mFikZdyz3cee9IvOruHCZaicKfiXJP18jSfxXkvVv8gBIQrAopOdNbGQ6ovqEaEUqrxxoUaUYJEahZx7mTfJwEWOnxjTP3e9A",
"types" : [ "administrative_area_level_2", "political" ],
"url" : "https://maps.google.com/maps/place?q=Devon&ftid=0x486bf8abdac00247:0x12c6ba0cca9c58fd"
},
"status" : "OK"
}
弹性搜索示例
{
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_bounding_box" : {
"pin.location" : {
"top_left" : {
"lat" : 40.73,
"lon" : -74.1
},
"bottom_right" : {
"lat" : 40.717,
"lon" : -73.99
}
}
}
}
}
}
有没有更好的方法从谷歌获取更多信息,或者elasticsearch可以从其他角落获得更多信息。尽管文档没有这样说?如果您知道东北角和西南角,您可以计算西北角(左上角)和东南角(右下角):
哦,天哪,我多厚啊 我所需要做的就是将结果交换给我的弹性搜索。即
{
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_bounding_box" : {
"pin.location" : {
"top_left" : {
"lat" : result.northeast.lat,
"lon" : result.southwest.lon
},
"bottom_right" : {
"lat" : result.southwest.lat,
"lon" : result.northwest.lon
}
}
}
}
}
}
我认为应该是
“lon”:result.northeast.lon
对于bottom\u right
你也可以使用map.getBounds().toJSON().south |.west |.north |.east
{
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_bounding_box" : {
"pin.location" : {
"top_left" : {
"lat" : result.northeast.lat,
"lon" : result.southwest.lon
},
"bottom_right" : {
"lat" : result.southwest.lat,
"lon" : result.northwest.lon
}
}
}
}
}
}