如何拖动';分区';元素,将其更改为';标记器';。。使用jquery

如何拖动';分区';元素,将其更改为';标记器';。。使用jquery,jquery,iphone,google-maps,drag,Jquery,Iphone,Google Maps,Drag,这是我的代码: <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <meta http-equiv="Content-Type" content="tex

这是我的代码:

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">

    </head>
<body onload="initialize()" onunload="GUnload()">

<style type="text/css">

</style>
<div id="map_canvas" style="width: 500px; height: 300px;float:left;"></div>
<div id=b style="width: 50px; height: 50px;background:red;float:left;margin-left:300px;"></div>

<script src="jquery-1.4.2.js" type="text/javascript"></script>
<script src="jquery-ui-1.8rc3.custom.min.js" type="text/javascript"></script>
<script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key=ABQIAAAA-7cuV3vqp7w6zUNiN_F4uBRi_j0U6kJrkFvY4-OX2XYmEAa76BSNz0ifabgugotzJgrxyodPDmheRA&sensor=false"type="text/javascript"></script>

<script type="text/javascript">

//**********
function initialize() {
      if (GBrowserIsCompatible()) {
        //
                function createMarker(point, number) {
                var marker = new GMarker(point);
                var message = ["这","是","个","秘密","消息"];
                marker.value = number;
                GEvent.addListener(marker, "click", function() {
                var myHtml = "<b>#" + number + "</b><br/>" + message[number -1];
                map.openInfoWindowHtml(point, myHtml);
                });
                return marker;
}
//

        var map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(39.9493, 116.3975), 13);

// Add 5 markers to the map at random locations
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
for (var i = 0; i < 5; i++) {
  var point = new GLatLng(southWest.lat() + latSpan * Math.random(),
    southWest.lng() + lngSpan * Math.random());
  map.addOverlay(createMarker(point, i + 1));
}
      }
}
//*************

$("#b").draggable();
</script>
</body>
</html>

//**********
函数初始化(){
if(GBrowserIsCompatible()){
//
函数createMarker(点、数字){
var标记=新的GMarker(点);
var消息=[”这","是","个","秘密","消息"];
marker.value=数字;
addListener(标记“单击”,函数(){
var myHtml=“#”+number+”
“+message[number-1]; openInfoWindowHtml(point,myHtml); }); 返回标记; } // var map=newgmap2(document.getElementById(“map_canvas”); 赛特中心地图(新格拉特林(39.9493116.3975),13); //在地图的任意位置添加5个标记 var bounds=map.getBounds(); var soutwest=bounds.getsoutwest(); var northEast=bounds.getNorthEast(); var lngSpan=northEast.lng()-soutwest.lng(); var latSpan=northEast.lat()-soutwest.lat(); 对于(变量i=0;i<5;i++){ var point=new GLatLng(soutwest.lat()+latSpan*Math.random(), soutwest.lng()+lngSpan*Math.random()); addOverlay(createMarker(点,i+1)); } } } //************* $(“#b”).draggable();
要使其正常工作,您需要做以下几件事:

  • 在可拖动元素上设置zIndex,使其显示在地图上方
  • 在元素上设置revert标志,使其不会落在映射下
  • 为stop事件添加一个处理程序,这样当用户在地图上删除元素时,您可以执行一些代码
  • 从地图元素内部的偏移映射到地图边界左上角的经纬度偏移
我已经根据您的建议完成了前三点。要完成最后一点,您需要查询GMap2对象以确定当前视图,然后进行映射。如果您对这部分有问题,请在此处发布,当我有时间时,我将使用该功能更新我的答案

    $("#b").draggable({
        zIndex: 2700,
        revert: true,
        revertDuration: 0,
        stop: function(event, ui) 
        {
            var dragOffset = ui.offset;
            var mapOffset = $(".map").offset();
            if (dragOffset.top > mapOffset.top && 
                dragOffset.left > mapOffset.left &&
                dragOffset.top < (mapOffset.top + $(".map").outerHeight()) &&
                dragOffset.left < (mapOffset.left + $(".map").outerWidth ()))
            {
                // top left corner is inside the map div (you can finess this "inside map" check)
                // add a marker at a random offset.
                // you will need to do some additional work to map
                // the page offset to lat/lng offset from the corner of the map
                var point = new GLatLng(southWest.lat() + latSpan * Math.random(),
                southWest.lng() + lngSpan * Math.random());
                map.addOverlay(createMarker(point, i + 1));
            }
        }
    });
$(“#b”).可拖动({
zIndex:2700,
回复:对,
持续时间:0,
停止:功能(事件、用户界面)
{
var dragOffset=ui.offset;
var mappoffset=$(“.map”).offset();
如果(dragOffset.top>mapOffset.top&&
dragOffset.left>mapOffset.left&&
dragOffset.top<(mapOffset.top+$(“.map”).outerHeight())&&
dragOffset.left<(mappoffset.left+$(“.map”).outerWidth())
{
//左上角位于地图分区内(您可以精细化此“内部地图”检查)
//在随机偏移处添加标记。
//你需要做一些额外的工作来绘制地图
//从地图角到lat/lng偏移的页面偏移
var point=new GLatLng(soutwest.lat()+latSpan*Math.random(),
soutwest.lng()+lngSpan*Math.random());
addOverlay(createMarker(点,i+1));
}
}
});

要使其正常工作,您需要做以下几件事:

  • 在可拖动元素上设置zIndex,使其显示在地图上方
  • 在元素上设置revert标志,使其不会落在映射下
  • 为stop事件添加一个处理程序,这样当用户在地图上删除元素时,您可以执行一些代码
  • 从地图元素内部的偏移映射到地图边界左上角的经纬度偏移
我已经根据您的建议完成了前三点。要完成最后一点,您需要查询GMap2对象以确定当前视图,然后进行映射。如果您对这部分有问题,请在此处发布,当我有时间时,我将使用该功能更新我的答案

    $("#b").draggable({
        zIndex: 2700,
        revert: true,
        revertDuration: 0,
        stop: function(event, ui) 
        {
            var dragOffset = ui.offset;
            var mapOffset = $(".map").offset();
            if (dragOffset.top > mapOffset.top && 
                dragOffset.left > mapOffset.left &&
                dragOffset.top < (mapOffset.top + $(".map").outerHeight()) &&
                dragOffset.left < (mapOffset.left + $(".map").outerWidth ()))
            {
                // top left corner is inside the map div (you can finess this "inside map" check)
                // add a marker at a random offset.
                // you will need to do some additional work to map
                // the page offset to lat/lng offset from the corner of the map
                var point = new GLatLng(southWest.lat() + latSpan * Math.random(),
                southWest.lng() + lngSpan * Math.random());
                map.addOverlay(createMarker(point, i + 1));
            }
        }
    });
$(“#b”).可拖动({
zIndex:2700,
回复:对,
持续时间:0,
停止:功能(事件、用户界面)
{
var dragOffset=ui.offset;
var mappoffset=$(“.map”).offset();
如果(dragOffset.top>mapOffset.top&&
dragOffset.left>mapOffset.left&&
dragOffset.top<(mapOffset.top+$(“.map”).outerHeight())&&
dragOffset.left<(mappoffset.left+$(“.map”).outerWidth())
{
//左上角位于地图分区内(您可以精细化此“内部地图”检查)
//在随机偏移处添加标记。
//你需要做一些额外的工作来绘制地图
//从地图角到lat/lng偏移的页面偏移
var point=new GLatLng(soutwest.lat()+latSpan*Math.random(),
soutwest.lng()+lngSpan*Math.random());
addOverlay(createMarker(点,i+1));
}
}
});