【发布时间】:2014-03-24 17:02:02
【问题描述】:
我正在使用 Google Maps API 和 jquery-ui-maps(这个问题与运行良好的插件无关)。
我创建了一个包含除莫桑比克以外的所有国家/地区的 FusionTablesLayer。用户可以放置一个标记并重新定位它。如果他试图将标记放在莫桑比克之外(在 FusionTablesLayer 上方),我正在尝试找到一种方法来阻止拖动(或提醒用户,现在没关系)。
经过一番研究,我发现了这种方法:containsLocation(point:LatLng, polygon:Polygon),它计算给定点是否位于指定多边形内。
它应该收到一个多边形,我有一个 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() {
})
});
});
【问题讨论】:
标签: javascript jquery google-maps google-maps-api-3 google-fusion-tables