我使用的是Google Maps API和jquery-ui-maps(这个问题与插件工作得很好)无关。谷歌地图 - FusionTablesLayer到Polygon
我已经创建了除莫桑比克以外的所有国家的FusionTablesLayer。用户可以放置一个标记并重新定位它。如果他试图将标记置于莫桑比克之外(通过FusionTablesLayer),我试图找到一种方法来阻止拖拽(或提醒用户,现在无关紧要)。
经过一番研究,我发现了这个方法:containsLocation(点:LatLng,多边形:多边形),计算给定点是否位于指定的多边形内。
它应该收到一个多边形,我有一个FusionTablesLayer。任何线索如何解决这个问题?
这里是我的代码:FIDDLE
尝试把一个标记,并将其拖到...
//Initialize the map
var mapa = $('#map_canvas').gmap({'center': '-18.646245,35.815918'});
$('#map_canvas').gmap('option', 'zoom', 7);
//create the layer (all countries except Mozambique)
var world_geometry;
$('#map_canvas').gmap().bind('init', function(event, map) {
world_geometry = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: '1N2LBk4JHwWpOY4d9fobIn27lfnZ5MDy-NoqqRpk',
where: "ISO_2DIGIT NOT EQUAL TO 'MZ'"
},
styles: [{
polygonOptions: {
fillColor: "#333333",
fillOpacity: 0.3
}
}],
map: map,
suppressInfoWindows: true
});
});
$('#map_canvas').gmap().bind('init', function(event, map) {
$(map).click(function(event) {
$('#map_canvas').gmap('clear', 'markers');
$('#map_canvas').gmap('addMarker', {
'position': event.latLng,
'draggable': true,
'bounds': false
}, function(map, marker) {
}).dragend(function(event) {
//I need to check if the marker is over the FusionTablesLayer and block the drag.
//var test = google.maps.geometry.poly.containsLocation(event.latLng, world_geometry);
}).click(function() {
})
});
});
我没有时间自己测试它,但它是有道理的! Thx为您的详细答案。 –
它就像一个魅力! tks –
@davidkonrad但是如果一个国家有太多的多边形。我们如何处理? –