为什么实例化Google Maps Places Search会在地图上添加一个丑陋的白色div?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么实例化Google Maps Places Search会在地图上添加一个丑陋的白色div?相关的知识,希望对你有一定的参考价值。
为什么创建google.maps.places.PlacesService
的实例会在地图的右侧添加半透明的白色div?
请看下图,我在其中突出显示<div>
使用Chrome的DevTools添加的PlacesSearch
(div出现在我测试过的所有浏览器中,包括Chrome,Firefox和Edge)。在使用javascript调用此行的确切时刻添加此div:
var service = new google.maps.places.PlacesService(map);
以下屏幕截图取自Google自己的文档页面:https://developers.google.com/maps/documentation/javascript/examples/place-search
在撰写本文时,该页面使用的是Google Maps JavaScript API版本3.31.2
,但它也出现在我自己的网站上使用版本3.29.14b
,所以看起来这个问题现在至少已经出现了几个版本。
您还可以在此处看到它:https://jsfiddle.net/q7788qvp/如果您多次单击“实例化”按钮,您可以看到多个白色半透明div在地图的右侧堆叠起来。
有没有办法阻止这个div添加到地图?
有一个open issue (#35828183) in the issue tracker
阻止<div>
被添加到map
的一种解决方法是将PlacesService
构造函数传递给htmlElement
而不是map
对象。
var service = new google.maps.places.PlacesService(document.getElementById('placediv'));
代码段:
$(document).ready(function() {
var map = new google.maps.Map($("#map")[0], {
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoom: 17,
center: new google.maps.LatLng(37.4219006, -122.0847023)
});
$("button").on("click", function() {
var service = new google.maps.places.PlacesService(document.getElementById('placediv'));
});
});
#map {
position: absolute;
left: 0;
top: 40px;
right: 0;
bottom: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3&libraries=places"></script>
<div id="placediv"></div>
<button>Instantiate PlacesSearch</button>
<div id="map"></div>
以上是关于为什么实例化Google Maps Places Search会在地图上添加一个丑陋的白色div?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 google.maps.places.Autocomplete 获得超过 5 个结果?
Google Maps Places API - 如何获取地名? [复制]
Google Places API 中缺少 Google Maps 中的地点