javascript - 获取 map 自动完成作为输入值

标签 javascript google-maps-api-3

我正在使用 Google map 自动完成 API 来帮助选择输入字段的位置。问题是,如果我尝试获取要在 Firebase 或类似内容中使用的输入值,它只会保存我在选择自动完成之前输入的内容。请参阅此CodePen:https://codepen.io/Auzy/pen/KWRjNp?editors=1111我一直在使用下面的 console.log 来尝试反射(reflect)自动完成值。

用法非常基本,所以我很惊讶我没有看到更多这个问题。

HTML:

<div class="container">
    <div class="form-group">
        <label for="exampleInputPassword1">Address</label>
        <input v-model="newPost.address" type="text" class="form-control" id="searchTextField" placeholder="Address">
    </div>
    <div class="place"></div>
</div>

JS

const searchInput = document.getElementById('searchTextField');
const autocomplete = new google.maps.places.Autocomplete(searchInput);

searchInput.addEventListener("change", () => {
    setTimeout(function() {
        let addr = searchInput.value;
        let embed = "<label for='exampleInputPassword1'>Map Preview</label><iframe frameborder='0' scrolling='no' marginheight='0' marginwidth='0' src='https://maps.google.com/maps?&amp;q=" + encodeURIComponent(addr) + "&amp;output=embed'></iframe>";

        $('.place').html(embed);
    }, 200);
    console.log(searchInput.value)

});

最佳答案

这有点棘手,因为 place 是一个对象,并且您看到的自动完成结果源自 Place 对象的属性。

因此,我为实现您想要做的事情所做的解决方法是组合两个地点属性 - place.nameplace.formatted_address。您可以找到full list here .

这是full demo我从Place Autocomplete sample from Google调整而来.

var place = autocomplete.getPlace();
var inputValue = place.name + " " + place.formatted_address;
console.log(inputValue);

示例自动完成演示

寻找:悉尼歌剧院

自动完成结果: 威尔逊 parking 场 - 悉尼歌剧院,麦格理街,悉尼,新南威尔士州,澳大利亚

放置获得的输入值: 威尔逊 parking 场 - 悉尼歌剧院 2 Macquarie St, Sydney NSW 2000, Australia

寻找:自由女神像

自动完成结果: 自由女神像出发,纽约,纽约州,美国

放置获得的输入值: 自由女神像出发纽约,NY 10004,美国

可以看到结果几乎一模一样。现在,您可以根据需要使用变量 inputValue(它是自动完成结果的几乎相同的副本)。 希望这会有所帮助。

关于javascript - 获取 map 自动完成作为输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43100832/

相关文章:

javascript - 具有多个堆叠的 google.charts.Bar 的透明背景,

google-maps-api-3 - 谷歌地图上的 100k 或更多标记没有聚类

javascript - Jquery 脚本中的 Google 区域偏差

javascript - 确保在网络版 Google map 上的标记周围填充

javascript - 在两点之间的每个交汇处放置标记并获取它们的坐标

javascript - .ajaxStart 和 .ajaxStop 不起作用

javascript - innerHTML 淡入

javascript - 如何让 jQuery 在事件发生后等待

Javascript getElementsByName 在 PHP 循环中不起作用

javascript - react 谷歌地图 : Marker resizes after zooming