Google maps api 3 计数并输出由圆半径绑定的标记数
我有一张地图,上面有融合表中的地点标记。我正在获取用户的位置,并显示一个半径为10英里的圆圈,距离他们的位置。这是我的代码-。如何使用api计算圆圈所绑定的标记数,并在页脚中输出该数字 干杯 相关代码:Google maps api 3 计数并输出由圆半径绑定的标记数,google-maps-api-3,google-maps-markers,google-fusion-tables,Google Maps Api 3,Google Maps Markers,Google Fusion Tables,我有一张地图,上面有融合表中的地点标记。我正在获取用户的位置,并显示一个半径为10英里的圆圈,距离他们的位置。这是我的代码-。如何使用api计算圆圈所绑定的标记数,并在页脚中输出该数字 干杯 相关代码: var map; function Initialize() { var MapOptions = { zoom: 7, center: new google.maps.LatLng(53.4125694, -8.245014), mapT
var map;
function Initialize() {
var MapOptions = {
zoom: 7,
center: new google.maps.LatLng(53.4125694, -8.245014),
mapTypeId: google.maps.MapTypeId.ROADMAP,
sensor: true
};
map = new google.maps.Map(document.getElementById("map_canvas"), MapOptions);
var layer = new google.maps.FusionTablesLayer({
query: {
select: 'Address',
from: '1OPU6utSjRYwJSFK-EXdaGmt2KgLTq2loVIjS3AA'
}
});
layer.setMap(map);
// Try HTML5 geolocation
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = new google.maps.LatLng(position.coords.latitude,
position.coords.longitude);
var marker = new google.maps.Marker({
map: map,
position: pos,
content: 'You are here!'
});
// Add circle overlay and bind to marker
var circle = new google.maps.Circle({
map: map,
radius: 16093, // 10 miles in metres
fillColor: '#AA0000'
});
circle.bindTo('center', marker, 'position');
map.setCenter(pos);
}, function() {
handleNoGeolocation(true);
});
} else {
// Browser doesn't support Geolocation
handleNoGeolocation(false);
}
}
function handleNoGeolocation(errorFlag) {
if (errorFlag) {
var content = 'Error: The Geolocation service failed.';
} else {
var content = 'Error: Your browser doesn\'t support geolocation.';
}
var options = {
map: map,
position: new google.maps.LatLng(60, 105),
content: content
};
var count = mgr.getMarkerCount(circle);
document.getElementById("Address").innerHTML += count + "<BR>";
google.maps.event.addDomListener(window, 'load', initialize);
//Maps API loaded, now load customizations
var element = document.createElement('script');
element.src = 'template.js';
element.type = 'text/javascript';
var scripts = document.getElementsByTagName('script')[0];
scripts.parentNode.insertBefore(element, scripts);
}
最简单的方法:使用这个方法。如果与用户位置的距离小于10英里,则标记位于圆圈内 由FusionTableLayer创建的标记不是真实的标记,无法将它们作为一种列表进行筛选。除非单击它们,否则无法获取标记的任何详细信息 但是您可以通过AJAX请求具有空间条件的FusionTableAPI,支持jsonp 查询的语法为:
SELECT COUNT() from tableId
WHERE ST_INTERSECTS('Address',CIRCLE(LATLNG(lat,lng),10000))
如何发送查询:
由于您的表受到保护,正在使用另一个FusionTable的数据:
我建议您首先获取FusionTablesLayer的所有坐标。 下面是侧边栏中使用的示例 然后使用循环语句,您可以使用computeDistanceBetween函数
请张贴相关代码。真的吗?它应该是公开的,这里是链接-。您从何处获得“table=”键?谢谢,这正是我想要的!我从链接映射的源中获取了表的tableId,但它不适用于该表,错误403:禁止。小提琴中使用的桌子只是一些用来演示它的桌子。