Map jQuery/Google地图:带半径控制的位置选择器?

Map jQuery/Google地图:带半径控制的位置选择器?,map,geolocation,location,Map,Geolocation,Location,我正在寻找一种简单的用户友好的方法来选择一个位置,通过获得横向/纵向位置以及影响半径 我在谷歌广告中选择广告显示区域时也看到过类似的情况。我想知道有没有jQuery/google解决方案?或者你见过类似的我可以实现的东西吗 我只需要一个中心(长/宽)和半径 另外,这是为英国准备的。我决定这样做: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-s

我正在寻找一种简单的用户友好的方法来选择一个位置,通过获得横向/纵向位置以及影响半径

我在谷歌广告中选择广告显示区域时也看到过类似的情况。我想知道有没有jQuery/google解决方案?或者你见过类似的我可以实现的东西吗

我只需要一个中心(长/宽)和半径


另外,这是为英国准备的。

我决定这样做:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>

        <!-- TITLE -->
        <title>Website Title</title>

        <!-- META -->
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

        <!-- JAVASCRIPT -->
        <script type="text/javascript" src='http://maps.google.com/maps/api/js?sensor=false'></script>
        <script type="text/javascript" src="jquery-1.4.4.min.js"></script>

        <script type="text/javascript">

            $(document).ready(function(){

                var Circle = null;
                var Radius = $("#radius").val();

                var StartPosition = new google.maps.LatLng(54.19335, -3.92695);

                function DrawCircle(Map, Center, Radius) {

                    if (Circle != null) {
                        Circle.setMap(null);
                    }

                    if(Radius > 0) {
                        Radius *= 1609.344;
                        Circle = new google.maps.Circle({
                            center: Center,
                            radius: Radius,
                            strokeColor: "#0000FF",
                            strokeOpacity: 0.35,
                            strokeWeight: 2,
                            fillColor: "#0000FF",
                            fillOpacity: 0.20,
                            map: Map
                        });
                    }
                }

                function SetPosition(Location, Viewport) {
                    Marker.setPosition(Location);
                    if(Viewport){
                        Map.fitBounds(Viewport);
                        Map.setZoom(map.getZoom() + 2);
                    }
                    else {
                        Map.panTo(Location);
                    }
                    Radius = $("#radius").val();
                    DrawCircle(Map, Location, Radius);
                    $("#latitude").val(Location.lat().toFixed(5));
                    $("#longitude").val(Location.lng().toFixed(5));
                }

                var MapOptions = {
                    zoom: 5,
                    center: StartPosition,
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    mapTypeControl: false,
                    disableDoubleClickZoom: true,
                    streetViewControl: false
                };

                var MapView = $("#map");
                var Map = new google.maps.Map(MapView.get(0), MapOptions);

                var Marker = new google.maps.Marker({
                    position: StartPosition, 
                    map: Map, 
                    title: "Drag Me",
                    draggable: true
                });

                google.maps.event.addListener(Marker, "dragend", function(event) {
                    SetPosition(Marker.position);
                });

                $("#radius").keyup(function(){
                    google.maps.event.trigger(Marker, "dragend");
                });

                DrawCircle(Map, StartPosition, Radius);
                SetPosition(Marker.position);

            });

        </script>

    </head>

    <body>

        <form>

            Latitude: <input type="text" id="latitude" /> Longitude: <input type="text" id="longitude" />
            Radius: <input type="text" id="radius" value="320" />

            <div id="map" style="width:600px; height:400px; background-color:#000000;">


            </div>

        </form>

    </body>

</html>

网站标题
$(文档).ready(函数(){
var循环=空;
变量半径=$(“#半径”).val();
var StartPosition=new google.maps.LatLng(54.19335,-3.92695);
功能绘图圆(地图、中心、半径){
如果(圆圈!=null){
Circle.setMap(空);
}
如果(半径>0){
半径*=1609.344;
圆圈=新的google.maps.Circle({
中心:中心,,
半径:半径,
strokeColor:#0000FF“,
笔划不透明度:0.35,
冲程重量:2,
fillColor:#0000FF“,
不透明度:0.20,
地图:地图
});
}
}
函数设置位置(位置、视口){
标记器。设置位置(位置);
如果(视口){
地图边界(视口);
Map.setZoom(Map.getZoom()+2);
}
否则{
panTo地图(位置);
}
半径=$(“#半径”).val();
绘图圈(地图、位置、半径);
$(“#纬度”).val(Location.lat().toFixed(5));
$(“#经度”).val(Location.lng().toFixed(5));
}
变量映射选项={
缩放:5,
中心:起始位置,
mapTypeId:google.maps.mapTypeId.ROADMAP,
mapTypeControl:false,
禁用双击缩放:真,
街景控制:错误
};
var MapView=$(“#映射”);
var Map=new google.maps.Map(MapView.get(0),MapOptions);
var Marker=new google.maps.Marker({
位置:起始位置,
地图:地图,
标题:“拖我走”,
德拉格布尔:是的
});
google.maps.event.addListener(标记“dragend”,函数(事件){
设置位置(标记位置);
});
$(“#半径”).keyup(函数(){
google.maps.event.trigger(标记“dragend”);
});
绘制圆(地图、起始位置、半径);
设置位置(标记位置);
});
纬度:经度:
半径:

您会注意到答案中的“something”一词,因为这不是完成的代码,也没有经过测试。而且你提供的链接确实有效,为什么你会说它不起作用呢?如果它对你不起作用,那就让它起作用,或者你是一个“金梅-提赫-科兹”人?我唯一没有被迫给出的答案(特别是代码)就是否决投票,这让你看起来像一个完整的工具。你为什么不自己提供答案呢?我对你的答案投了反对票,因为我想在我报告之前给你一个机会让它变得更好。因为这是一个非常糟糕的答案。正如您所说,它未经测试(未经确认),缺乏文档和注释。这只是与这个问题有点相关的东西的一种粘贴。如果除了你之外还有其他人会问这个问题,你的答案就不会被接受。至于位置选择器,输入不会更新,因此代码无法工作。时期若你们想提交未经测试的非工作代码,请写一个免责声明。哦,你们必须拖动指针。我明白了,那样的话,我必须道歉。我会编辑你的答案,这样我就可以改变我的投票(请随意否决)。如果你能编辑你的答案,我将不胜感激。也许可以添加一个简短的提示,您必须将其拖动。。因为大多数选择器都在当前地图的中心位置工作。我真的很想改变我的投票,因为这段代码非常有价值。嘿,在那次小小的争吵之后,我认为你应该得到一个很好的感谢,非常有用的代码,而且效果很好。