Google Places API - 地址和电话号码
Google Places API- Address and phone number?
我正在尝试通过Google地方信息创建列表和地图。下面显示了制造商和本地商店的列表。现在它只显示商店的名称。如何包含地址和电话?我会添加另一个对象规范吗?
更新:根据此链接:谷歌地方API - 地点详细信息请求未定义
应该添加place.getDetails()。但是,我的脚本现在只显示一个市场,而不是细节。这是怎么回事?
更新更新:
此处的 HTML 示例:http://simplecomputerblog.com/searchtest1.html
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places"></script>
<script>
var map, placesList;
var infowindow;
var service; //declare globally
function initialize() {
var pyrmont = new google.maps.LatLng(40.062664, -83.069101);
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: pyrmont,
zoom: 15
});
var request = {
location: pyrmont,
radius: 500,
types: ['store']
};
infowindow = new google.maps.InfoWindow();
placesList = document.getElementById('places');
service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);
service.getDetails(request, callback);
}
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
}
}
}
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location
});
var request = { reference: place.place_id };
service.getDetails(request, function(details, status) {
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(details.name + "<br />" + details.formatted_address +"<br />" + details.website + "<br />" + details.rating + "<br />" + details.formatted_phone_number);
infowindow.open(map, this);
});
});
placesList.innerHTML += '<li>' + place.name + '</li>';
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
从文档中,您可以通过执行以下操作轻松了解您获取的地点的number
和address
:
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(place.name+place.formatted_address+place.formatted_phone_number);
infowindow.open(map, this);
});
placesList.innerHTML += '<li>' + place.name + '</li>';
}
再次来自文档:
信息窗口的内容可能包含文本字符串、片段 的 HTML 或 DOM 元素。要设置内容,请指定它 在信息窗口选项中或在信息窗口中调用 setContent() 明确地。
编辑-正如正确指出的那样,nearbySearch
的结果不会在result
对象中返回formatted_address
和formatted_phone_number
,为此,您必须发出另一个getdetails
请求,就像您已经合并到代码中一样。它可能看起来像(未经测试):
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location
});
var request = { placeId: place.place_id };
service.getDetails(request, function(details, status) {
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(details.name + "<br />" + details.formatted_address +"<br />" + details.website + "<br />" + details.rating + "<br />" + details.formatted_phone_number);
infowindow.open(map, this);
});
});
placesList.innerHTML += '<li>' + place.name + '</li>';
}
重要的是,service
可用于您使用它的函数的范围。所以在所有函数之外声明它并像这样适当地初始化它:
var service; //declare globally
function intialize(){
...
service = new google.maps.places.PlacesService(map); //initialize here
...
}
因此,您可以相应地格式化该内容字符串并填充信息窗口。希望它能让你开始正确的方向。
相关文章:
- 带有加号的电话号码验证(可选)
- 正则表达式,用于在 JavaScript 中为电话号码添加短划线
- 通过Javascript将HTML中的电话号码与URL参数进行交换
- Javascript/Ajax:通过点击按钮检查有效的电子邮件和电话号码
- 如何将页面上的所有电话号码更改为可点击链接,不包括特定类别的元素
- 验证澳大利亚的电话号码
- 使用javascript验证电话号码无效
- Regex表示8位电话号码(新加坡号码长度)
- HTML文本框,它接受电话号码,并以美国电话号码格式显示
- 试图清理一个电话号码,以便如果它像816-345-6757一样被输入,它会像8163456757一样返回它
- 输入中的国际电话号码格式
- 什么是英国电话号码验证表达式和语法
- 使用 AngularJs 格式化电话号码
- 如何使移动用户可点击动态电话号码
- 如何通过Phonegap使用iOS格式查找联系人的电话号码
- Jquery国际电话号码输入
- Javascript-如何验证两个电话号码是否不同
- javascript/jquery:从字符串中提取电话号码
- Google Places API - 地址和电话号码
- 如何使一个地址可点击(可检测)的iphone html像电话号码