【发布时间】:2014-02-05 11:04:24
【问题描述】:
所以我正在使用带有搜索框的谷歌地图 api
即这里 https://developers.google.com/maps/documentation/javascript/examples/places-searchbox
在我的 DOM 中,我有以下 html
<div id="mapdialog">
<input id="pac-input" class="controls" type="text" placeholder="Search Box">
<div id="map-canvas"></div>
</div>
然后当用户点击我的“地图”按钮时调用 google API
$("#gMap,#gMapSide").click(function () {
var geoUrl = "http://maps.googleapis.com/maps/api/geocode/json?address=" + county + "&sensor=true";
$.ajax({
url: geoUrl,
context: document.body
}).done(function (data) {
ne = data.results[0].geometry.viewport.northeast;
se = data.results[0].geometry.viewport.southwest;
initialize(ne.lat, ne.lng, se.lat, se.lng);
});
return false;
});
当第一次点击 MAP 时,会显示搜索框。但是当用户第二次点击地图按钮时,地图仍然可以正常加载,但没有搜索框。
如果您查看 google 初始化代码,它会抓取盒子并将其推送到地图上
var input = /** @type {HTMLInputElement} */(
document.getElementById('pac-input'));
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
所以我认为这就是为什么没有搜索框第二次点击的原因,因为它已经从 DOM 中消失了?
欢迎提出任何建议!
【问题讨论】:
-
你能证明吗?就像在第一个按钮按下并刷新 html 后打开开发工具一样,输入是否从 DOM 中消失了?
-
是的,它消失了,它被推送到谷歌地图控制。但是第二次点击它甚至不再在谷歌地图控制中了
标签: jquery ajax google-maps