无法从 Bing 地图中删除多边形
Unable to remove a polygon from Bing map
我的应用程序中有一个屏幕,我在其中使用 Bing 地图管理多边形和与多边形相关的信息。
我想在有人点击多边形时显示多边形的详细信息。所以我在多边形上添加了一个点击事件并且它工作正常。
我还想允许用户编辑多边形,同时 viewing/modifying 单击事件后的其他信息。所以我计划在点击事件后从地图的实体中删除多边形并将其添加到绘图管理器以进行进一步的编辑。但是我无法从地图的实体中删除特定的多边形。我尝试准备相同的多边形并将其传递给地图的实体删除功能,但它不起作用。下面是相同的示例代码,我的应用程序是在 angular:
中开发的
var map = new Microsoft.Maps.Map(document.getElementById('myMap'), {
credentials: 'Your Bing Maps Key'
});
var polygon1 = new Microsoft.Maps.Polygon([
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude - 0.03),
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude - 0.11),
new Microsoft.Maps.Location(center.latitude + 0.05, center.longitude - 0.07)
]);
polygon1.entity = { id: 1 };
map.entities.push(polygon1);
var polygon2 = new Microsoft.Maps.Polygon([
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude + 0.03),
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude + 0.11),
new Microsoft.Maps.Location(center.latitude + 0.05, center.longitude + 0.07)
]);
polygon2.entity = { id: 2 };
map.entities.push(polygon2);
Microsoft.Maps.Events.addHandler(polygon, 'click', function (e) {
var geoId = e.target.entity.id;
//Here I want to find the polygon with provided Id and remove it so that I can add it to drawing manager for further modification
//Code to remove the polygon
var polygonToRemove = new Microsoft.Maps.Polygon([
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude - 0.03),
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude - 0.11),
new Microsoft.Maps.Location(center.latitude + 0.05, center.longitude - 0.07)
]);
polygonToRemove.entity = { id: 1 };
map.entities.remove(polygonToRemove);
//Code to add the polygon to drawing manager
});
在您的点击事件处理程序中,您正在创建一个新的多边形,它可能与另一个多边形具有相同的位置,但是是不同的对象none。您必须传入要删除的实际形状对象的实例,而不是它的副本。这是您的代码的修改版本:
Microsoft.Maps.Events.addHandler(polygon, 'click', function (e) {
map.entities.remove(e.target);
});
我的应用程序中有一个屏幕,我在其中使用 Bing 地图管理多边形和与多边形相关的信息。
我想在有人点击多边形时显示多边形的详细信息。所以我在多边形上添加了一个点击事件并且它工作正常。
我还想允许用户编辑多边形,同时 viewing/modifying 单击事件后的其他信息。所以我计划在点击事件后从地图的实体中删除多边形并将其添加到绘图管理器以进行进一步的编辑。但是我无法从地图的实体中删除特定的多边形。我尝试准备相同的多边形并将其传递给地图的实体删除功能,但它不起作用。下面是相同的示例代码,我的应用程序是在 angular:
中开发的var map = new Microsoft.Maps.Map(document.getElementById('myMap'), {
credentials: 'Your Bing Maps Key'
});
var polygon1 = new Microsoft.Maps.Polygon([
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude - 0.03),
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude - 0.11),
new Microsoft.Maps.Location(center.latitude + 0.05, center.longitude - 0.07)
]);
polygon1.entity = { id: 1 };
map.entities.push(polygon1);
var polygon2 = new Microsoft.Maps.Polygon([
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude + 0.03),
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude + 0.11),
new Microsoft.Maps.Location(center.latitude + 0.05, center.longitude + 0.07)
]);
polygon2.entity = { id: 2 };
map.entities.push(polygon2);
Microsoft.Maps.Events.addHandler(polygon, 'click', function (e) {
var geoId = e.target.entity.id;
//Here I want to find the polygon with provided Id and remove it so that I can add it to drawing manager for further modification
//Code to remove the polygon
var polygonToRemove = new Microsoft.Maps.Polygon([
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude - 0.03),
new Microsoft.Maps.Location(center.latitude + 0.01, center.longitude - 0.11),
new Microsoft.Maps.Location(center.latitude + 0.05, center.longitude - 0.07)
]);
polygonToRemove.entity = { id: 1 };
map.entities.remove(polygonToRemove);
//Code to add the polygon to drawing manager
});
在您的点击事件处理程序中,您正在创建一个新的多边形,它可能与另一个多边形具有相同的位置,但是是不同的对象none。您必须传入要删除的实际形状对象的实例,而不是它的副本。这是您的代码的修改版本:
Microsoft.Maps.Events.addHandler(polygon, 'click', function (e) {
map.entities.remove(e.target);
});