我正在使用版本3 API,我有一个文本输入,用户输入一个搜索字符串,用于通过API进行地理编码。地图会更新,并在结果匹配处放置标记。除少数情况外,这一切都很好。这是代码:
geocoder.geocode({
'address': address,
region: 'AU'
}, function(results, status) {
// do stuff with results
}
问题在于用户输入lat / lng对,例如22°53'21"S, 118°28'36"E
。当坐标落入乡村区域时,返回的匹配不是输入坐标的精确表示,而是来自Google的匹配位置的中心。例如。结果是-22.4951839, 118.73455850000005
。即,标记从用户输入的位置移开。
那么,在用户输入lat / lng的情况下,如何防止这种位置匹配/居中?在这些情况下,我希望标记被放置在lat / lng中,用于解析的坐标,而不是匹配的位置的中心(但我想继续使用API,因为它处理/解析所有各种lat / lng格式和我还存储地点/地址信息。)
答案 0 :(得分:1)
你可以在输入框上进行模式匹配,测试数字加上标点符号和°。如果匹配,则转换为十进制纬度/经度并创建标记,否则通过地理编码器运行。
答案 1 :(得分:1)
我遇到了类似的问题。如果您决定编写自己的解析代码,那么如果您拥有的唯一字母字符是NSEWnsew,则用户可能会输入坐标。
然后,您可以将所有非数字更改为空格并分析字符串: 6个数字表示你有度,分,秒 4个数字表示您有度,小数分钟 2个数字表示您有十进制度
唯一的另一个问题是处理字符:NSEW + -
答案 2 :(得分:0)
今天我不得不重新审视这个问题,我找到了一个JS库,它在解析坐标(十进制和DMS)的用户输入方面做得相当不错:
http://dbarbalato.github.io/magellan/
只会分别处理lat
和lng
- 因此我必须在输入上执行split(',')
。