Html GoogleMapsAPI:利用总标记生成变量
抱歉,如果之前已经回答了这个问题。我在做标题时被警告可能有类似的问题,但我没有发现任何东西。我正在做一个基于位置数据的统计程序,但我不知道如何实际使用生成的结果作为变量。下面的代码是我工作的基础,并根据纬度和经度提供了多达60家附近的餐厅。有没有办法获取生成的标记的总数,并将其转换为一个变量,该变量可以在其他对象中引用,例如HTML表,或引用变量的其他类似项?此外,提供的API应该可以工作,但是您可能需要自己的API密钥来实现这一点Html GoogleMapsAPI:利用总标记生成变量,html,api,google-maps,counter,Html,Api,Google Maps,Counter,抱歉,如果之前已经回答了这个问题。我在做标题时被警告可能有类似的问题,但我没有发现任何东西。我正在做一个基于位置数据的统计程序,但我不知道如何实际使用生成的结果作为变量。下面的代码是我工作的基础,并根据纬度和经度提供了多达60家附近的餐厅。有没有办法获取生成的标记的总数,并将其转换为一个变量,该变量可以在其他对象中引用,例如HTML表,或引用变量的其他类似项?此外,提供的API应该可以工作,但是您可能需要自己的API密钥来实现这一点 <!DOCTYPE html> <html&
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Place search pagination</title>
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#right-panel {
font-family: 'Roboto','sans-serif';
line-height: 30px;
padding-left: 10px;
}
#right-panel select, #right-panel input {
font-size: 15px;
}
#right-panel select {
width: 100%;
}
#right-panel i {
font-size: 12px;
}
#right-panel {
font-family: Arial, Helvetica, sans-serif;
position: absolute;
right: 5px;
top: 60%;
margin-top: -195px;
height: 330px;
width: 200px;
padding: 5px;
z-index: 5;
border: 1px solid #999;
background: #fff;
}
h2 {
font-size: 22px;
margin: 0 0 5px 0;
}
ul {
list-style-type: none;
padding: 0;
margin: 0;
height: 271px;
width: 200px;
overflow-y: scroll;
}
li {
background-color: #f1f1f1;
padding: 10px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
li:nth-child(odd) {
background-color: #fcfcfc;
}
#more {
width: 100%;
margin: 5px 0 0 0;
}
</style>
<script>
// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">
var map;
function initMap() {
// Create the map.
var pyrmont = {lat: -33.866, lng: 151.196};
map = new google.maps.Map(document.getElementById('map'), {
center: pyrmont,
zoom: 17
});
// Create the places service.
var service = new google.maps.places.PlacesService(map);
var getNextPage = null;
var moreButton = document.getElementById('more');
moreButton.onclick = function() {
moreButton.disabled = true;
if (getNextPage) getNextPage();
};
// Perform a nearby search.
service.nearbySearch(
{location: pyrmont, radius: 500, type: ['restaurants']},
function(results, status, pagination) {
if (status !== 'OK') return;
createMarkers(results);
moreButton.disabled = !pagination.hasNextPage;
getNextPage = pagination.hasNextPage && function() {
pagination.nextPage();
};
});
}
function createMarkers(places) {
var bounds = new google.maps.LatLngBounds();
var placesList = document.getElementById('places');
for (var i = 0, place; place = places[i]; i++) {
var image = {
url: place.icon,
size: new google.maps.Size(71, 71),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(17, 34),
scaledSize: new google.maps.Size(25, 25)
};
var marker = new google.maps.Marker({
map: map,
title: place.name,
position: place.geometry.location
});
var li = document.createElement('li');
li.textContent = place.name;
placesList.appendChild(li);
document.getElementById('number_results').innerHTML = placesList.children.length + " returned";
bounds.extend(place.geometry.location);
}
map.fitBounds(bounds);
}
</script>
</head>
<body>
<div id="map"></div>
<div id="right-panel">
<h2>Results</h2>
<div id="number_results"></div>
<ul id="places"></ul>
<button id="more">More results</button>
</div>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBYoCkx3owRBY3uLwBvW36B0GNeMQtBm1o&libraries=places&callback=initMap" async defer></script>
</body>
</html>
结果
更多结果
document.getElementById('places').children.length将包含显示的结果数(第一个请求最多20个,三个请求最多60个)
这将更新您的表:
document.getElementById("val").innerHTML = "Based on your latitude of " + lat + " and longitude of " + lng + ", the total number of libraries are: " + document.getElementById('places').children.length + ".";
但是您需要在响应返回时调用它(在createMarkers
函数中):
代码片段:
#地图{
身高:100%;
}
html,
身体{
身高:100%;
保证金:0;
填充顶部:10px;
左侧填充:10px;
右边填充:10px;
背景色:#fff
}
#右面板{
字体系列:“机器人”,“无衬线”;
线高:30px;
左侧填充:10px;
}
#右面板选择,
#右面板输入{
字体大小:15px;
}
#右面板选择{
宽度:100%;
}
#右面板i{
字体大小:12px;
}
#右面板{
字体系列:Arial、Helvetica、无衬线字体;
位置:绝对位置;
右:5px;
最高:60%;
利润上限:-395px;
高度:650px;
宽度:200px;
填充:10px;
左侧填充:10px;
z指数:10;
边框:1px实心#999;
背景:#fff;
}
氢{
字体大小:23px;
保证金:0.5px 0;
}
保险商实验室{
列表样式类型:无;
填充:0;
保证金:0;
高度:580px;
宽度:200px;
溢出y:滚动;
}
李{
背景色:#ffc965;
填充物:5px;
文本溢出:省略号;
空白:nowrap;
溢出:隐藏;
}
李:第n个孩子(单数){
背景色:#fff065;
}
#更多{
宽度:100%;
保证金:5px0;
}
输入[类型=文本],
挑选{
宽度:100%;
填充:12px 20px;
利润率:8px0;
显示:内联块;
边框:1px实心#ccc;
边界半径:4px;
框大小:边框框;
背景色:#ffefe5
}
.集装箱{
边界半径:5px;
背景色:#fff填充:80px;
宽度:80%
}
钮扣{
宽度:100%;
背景色:#8f20b6;
颜色:白色;
填充:14px 20px;
利润率:8px0;
边界:无;
边界半径:4px;
光标:指针;
}
按钮:悬停{
背景色:#cba00d;
}
桌子{
宽度:100%;
背景色:#8f20b6;
颜色:白色;
填充:25px 0px;
利润率:8px0;
边界:无;
光标:指针;
}
拉特
液化天然气
提交
位置
更多结果
var red_图标http://maps.google.com/mapfiles/ms/icons/red-dot.png';
var映射;
var lat=41.18076;
液化天然气风险=-73.20537;
函数initMap(){
//创建地图。
变量集={
拉特:拉特,
液化天然气:液化天然气
};
map=new google.maps.map(document.getElementById('map'){
中心:设定,
缩放:13
});
google.maps.event.addListener(映射,'click',函数(e){
document.getElementById('lat')。value=e.latLng.lat();
document.getElementById('lng')。value=e.latLng.lng();
})
//创建places服务。
var service=newgoogle.maps.places.PlacesService(地图);
var getNextPage=null;
var moreButton=document.getElementById('more');
moreButton.onclick=函数(){
moreButton.disabled=true;
if(getNextPage)getNextPage();
};
//执行附近的搜索。
服务,近距离搜索({
地点:集,,
半径:9500,
关键词:“图书馆”
},
功能(结果、状态、分页){
如果(状态!=='OK')返回;
创建标记(结果);
moreButton.disabled=!pagination.hasNextPage;
getNextPage=pagination.hasNextPage&&function(){
分页。下一页();
};
});
}
函数createMarkers(位置){
var bounds=new google.maps.LatLngBounds();
var placesList=document.getElementById('places');
for(var i=0,place;place=places[i];i++){
var marker=new google.maps.marker({
地图:地图,
图标:红色图标,
标题:place.name,
位置:place.geometry.location
});
var li=document.createElement('li');
li.textContent=place.name;
placesList.appendChild(li);
document.getElementById('number_results')。innerHTML=placesList.childrence.length+“returned”;
扩展(place.geometry.location);
var spookRating1=li*100
}
映射边界(bounds);
document.getElementById(“val”).innerHTML=“根据您的纬度“+lat+”和经度“+lng+”,库的总数为:“+document.getElementById('places').children.length+”;
}
职能转变中心(){
var newLat=parseFloat(document.getElementById(“lat”).value);
var newLng=parseFloat(document.getElementById(“lng”).value);
地图设置中心({
拉特:纽拉特,
液化天然气:新液化天然气
});
返回false;
}
我倾向于查看results.length
是否返回结果数。为了测试这一点,我制作了一个行文档。getElementById(“val”).innerHTML=“Lat:+Lat+”Lng:+Lng+”总计:“+results.length+”;但是results.length是未定义的。“li”和“placesList.childrence.length”会产生类似的错误,“number_results”会产生[object htmldevelment]你确定在谷歌返回结果后检查了results.length吗?你在哪里(或者你想去哪里
function createMarkers(places) {
var bounds = new google.maps.LatLngBounds();
var placesList = document.getElementById('places');
for (var i = 0, place; place = places[i]; i++) {
var image = {
url: place.icon,
size: new google.maps.Size(71, 71),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(17, 34),
scaledSize: new google.maps.Size(25, 25)
};
var marker = new google.maps.Marker({
map: map,
icon: red_icon,
title: place.name,
position: place.geometry.location
});
var li = document.createElement('li');
li.textContent = place.name;
placesList.appendChild(li);
document.getElementById('number_results').innerHTML = placesList.children.length + " returned";
bounds.extend(place.geometry.location);
var spookRating1 = li * 100
}
map.fitBounds(bounds);
document.getElementById("val").innerHTML = "Based on your latitude of " + lat + " and longitude of " + lng + ", the total number of libraries are: " + document.getElementById('places').children.length + ".";
}