我想在地图API中实现如下功能,当鼠标位于绘制的图形中,鼠标右键菜单1;当鼠标位于绘制的图形外,鼠标右键弹出菜单2。
目前不知道如何判断鼠标的位置,请指点迷津。

鼠标菜单1

鼠标菜单2
以下是鼠标菜单事件:
var control;
var zoom = 12;
var map;
var handler_M; //绘制点
var leTool,pyTool,reTool,ceTool; //线、多边形、矩形、圆
function onLoad() {
map = new T.Map('mapDiv',{
minZoom:3,
maxZoom:18
});
map.centerAndZoom(new T.LngLat(116.40769, 39.89945), zoom);
//创建缩放平移控件对象
control = new T.Control.Zoom();
//添加缩放平移控件
map.addControl(control);
//允许鼠标滚轮缩放地图
map.enableScrollWheelZoom();
//创建比例尺控件对象
var scale = new T.Control.Scale();
//添加比例尺控件
map.addControl(scale);
//禁用鼠标双击放大地图
map.disableDoubleClickZoom()
//创建地图类型对象
var ctrl = new T.Control.MapType();
//添加控件
map.addControl(ctrl);
var config_py= {
showLabel: true,
color: "#FF00FF", weight: 3, opacity: 1.0, fillColor: "#00FF00", fillOpacity: 0.4
};
var config_L= {
showLabel: true,
color: "#FF00FF", weight: 3, opacity: 1.0, fillColor: "#F5FFFA", fillOpacity: 0.4
};
var config_p= {
showLabel: true,
color: "#FF00FF", weight: 3, opacity: 1.0, fillColor: "#ADFF2F", fillOpacity: 0.4
};
var config_c= {
showLabel: true,
color: "#FF00FF", weight: 3, opacity: 1.0, fillColor: "#00BFFF", fillOpacity: 0.4
};
//创建多边形工具对象
pyTool = new T.PolygonTool(map, config_py);
//创建直线工具对象
leTool =new T.PolylineTool(map, config_L);
//创建矩形工具对象
reTool = new T.RectangleTool(map,config_p);
//创建圆形工具对象
ceTool = new T.CircleTool(map,config_c);
//创建图形外的右键菜单
var menu_out = new T.ContextMenu({
width: 100
});
var txtMenuItem_out = [
{
text: '设为标记点',
callback: function () {
map.zoomIn()
}
},
{
text: '放大地图',
callback: function () {
map.zoomIn()
}
},
{
text: '缩小地图',
callback: function () {
map.zoomOut()
}
},
{
text: '显示最大地图',
callback: function () {
map.setZoom(18)
}
},
];
for (var i = 0; i < txtMenuItem_out.length; i++) {
//添加菜单项
var menuItem_out = new T.MenuItem(txtMenuItem_out[i].text, txtMenuItem_out[i].callback);
menu_out.addItem(menuItem_out);
menu_out.addSeparator();
};
//创建图形内的右键菜单
var menu_in = new T.ContextMenu({
width: 100
});
var txtMenuItem_in = [
{
text: '编辑对象',
callback: function () {
map.zoomIn()
}
},
{
text: '移动对象',
callback: function () {
map.zoomIn()
}
},
{
text: '显示信息',
callback: function () {
map.zoomOut()
}
},
{
text: '更改颜色',
callback: function () {
map.setZoom(18)
}
},
{
text: '删除对象',
callback: function () {
map.setZoom(18)
}
},
];
for (var i = 0; i < txtMenuItem_in.length; i++) {
//添加菜单项
var menuItem_in = new T.MenuItem(txtMenuItem_in[i].text, txtMenuItem_in[i].callback);
menu_in.addItem(menuItem_in);
menu_in.addSeparator();
}
//添加右键菜单
//map.addContextMenu(menu_in);
//添加图形外的右键菜单
// map.addContextMenu(menu_out);
};
//鼠标监听事件
function addMapMousemove()
{
removeMapMousemove();
map.addEventListener("mousemove",MapMousemove);
}
//移除鼠标监听事件
function removeMapMousemove()
{
map.removeEventListener("mousemove",MapMousemove);
}
//绘制多边形
function openPolygonTool() {
if (pyTool) pyTool.close();
//大致相当于 if (handler<>nil) then handler.close(),如果handler存在,就执行handler.close
pyTool = new T.PolygonTool(map, {follow: true});
pyTool.open();
// 监听双击绘制完成事件,调用drawFinish方法
}
//绘制直线
function openPolylineTool() {
if (leTool ) leTool .close();
leTool = new T.PolylineTool(map);
//map.addOverLay(handler_L);
leTool.open();
}
//绘制一个点
function openMarkerTool() {
if (handler_M) handler_M.close();
handler_M = new T.MarkTool(map, {follow: true});
handler_M.open();
}
//绘制矩形
function openRectangleTool() {
if (reTool) reTool.close();
reTool = new T.RectangleTool(map, {follow: true});
reTool.open();
}
//绘制圆形
function openCircleTool() {
if (ceTool) ceTool.close();
ceTool = new T.CircleTool(map, {follow: true});
ceTool.open();
}
//计算图层数量
function getLayerCount() {
return map.getOverlays().length;
}
function drawFinish(){
isEditable=true;
}