Javascript 谷歌地图api将自动填充表单置于加载状态
如果我有place.reference,有没有办法在从google自动完成加载时填写表单 如果我输入企业名称,然后从列表中选择一个,然后单击它,则此代码可以工作 但我的问题的关键部分,是通过参考资料,并能够得到所需的信息Javascript 谷歌地图api将自动填充表单置于加载状态,javascript,google-maps-api-3,autocomplete,Javascript,Google Maps Api 3,Autocomplete,如果我有place.reference,有没有办法在从google自动完成加载时填写表单 如果我输入企业名称,然后从列表中选择一个,然后单击它,则此代码可以工作 但我的问题的关键部分,是通过参考资料,并能够得到所需的信息 <? if(isset($_GET["ref"])){ $ref=htmlspecialchars($_GET["ref"]); echo $ref; } ?> <script src="http://maps.googl
<?
if(isset($_GET["ref"])){
$ref=htmlspecialchars($_GET["ref"]);
echo $ref;
}
?>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var place = autocomplete.getPlace();
document.getElementById('city2').value = place.name;
document.getElementById('cityLat').value = place.geometry.location.lat();
document.getElementById('cityLng').value = place.geometry.location.lng();
//alert("This function is working!");
//alert(place.name);
// alert(place.address_components[0].long_name);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<body>
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on" runat="server" />
<input type="text" id="city2" name="city2" />
<input type="text" id="cityLat" name="cityLat" />
<input type="text" id="cityLng" name="cityLng" />
函数初始化(){
var input=document.getElementById('searchTextField');
var autocomplete=new google.maps.places.autocomplete(输入);
google.maps.event.addListener(自动完成,'place\u changed',函数(){
var place=autocomplete.getPlace();
document.getElementById('city2')。value=place.name;
document.getElementById('cityla')。value=place.geometry.location.lat();
document.getElementById('cityLng')。value=place.geometry.location.lng();
//警报(“此功能正在工作!”);
//警报(地点、名称);
//警报(place.address\u组件[0]。long\u名称);
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);
编辑以下建议(但不起作用):
函数初始化(){
var input=document.getElementById('searchTextField');
var autocomplete=new google.maps.places.autocomplete(输入);
var请求={
参考资料:“CNRTAAAP2OQGVEDOEA5ZāXkX0-adnnl4hsGlSJNyuJIVEUeBnkrGcfzDw0z0Ffi7GsZBdYtx-QMBU6EKZUPZPMWJDVYNDOKWGSD-V5ff(Y9wN4McpGxLJ)Y9WN4MCPGU7W2HI(J0VTNYQTFEQ0CHTD1FL1帮助35PZIHOUE8W5WNPU1W5W5KW5W5Lvg1W5CPGXL5VPDBO”
};
服务=新的google.maps.places.PlacesService(地图);
/*这里我得到了这个控制台错误:uncaughtreferenceerror:map没有定义*/
获取详细信息(请求、回调);
函数回调(位置、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
document.getElementById('city2')。value=place.name;
document.getElementById('cityla')。value=place.geometry.location.lat();
document.getElementById('cityLng')。value=place.geometry.location.lng();
}
}
}
google.maps.event.addDomListener(窗口“加载”,初始化);
您可以基于给定的引用,为返回的对象设置自动完成的place
-属性。(使用MVCObject
的set
-方法,否则自动完成将无法识别更改)
设置place属性后,表单字段(searchTextField除外)将自动填充
searchTextField
的值设置为返回对象的name
-属性
当您喜欢服务器端解决方案时,也可以通过请求详细信息(然后您必须自己设置所有字段的值)您好,我根据您的建议更新了代码,但无法使其正常工作。我不理解“设置MVCObject方法”和“名称属性”。我在你的链接上看不到这一点。MVCObject是大多数
google.maps
-对象的基类:非常感谢代码和引用,我永远不会明白这一点。
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
var request = {
reference: 'CnRtAAAAP2oQGVedOeA5z_XkX0-adnnl4hsGlSJNyuJIVEUeBnkrGcfzDw0z0Ffi7GsZBdYtx-Qmbu6ekzUpZpMwJDVVyNDOKwGsd-V5ff_Y9wN4McpGxLJ_u7reNwwlKOEtkoks4dtcpUcuu7w2hI_j0VtnYhIQtfEq0cHTD1Fl1OeL35pzIhoUE8A3wNPUB1jk5lvueDGqwtVpdbo'
};
service = new google.maps.places.PlacesService(map);
/* Here I get this Console Error: Uncaught ReferenceError: map is not defined */
service.getDetails(request, callback);
function callback(place, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
document.getElementById('city2').value = place.name;
document.getElementById('cityLat').value = place.geometry.location.lat();
document.getElementById('cityLng').value = place.geometry.location.lng();
}
}
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<body>
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on" runat="server" />
<input type="text" id="city2" name="city2" />
<input type="text" id="cityLat" name="cityLat" />
<input type="text" id="cityLng" name="cityLng" />