- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要从给定的静态点在谷歌地图上画一个圆圈。我尝试通过设置圆圈设置 center
来实现此目的,如下所示,center: new google.maps.LatLng(-34.397, 150.644)
在使用 绘制后绘图管理器
。
但这里的问题是圆圈从鼠标点击位置开始绘制,一旦完成,圆圈就会捕捉到给定的 lat
和 lng
,如在 fiddle :http://jsfiddle.net/hjkety80/1/
我需要的是,无论我在哪里点击圆圈都应该从给定的静态点开始绘制。如果描述含糊不清,我深表歉意,如果需要,我很乐意澄清更多。非常感谢有关此事的任何帮助/引用。
谢谢
编辑
如果可能,即使圆心绑定(bind)到标记也是一个很好的解决方法
最佳答案
我已经为您创建了一个工作示例。它没有使用 DrawingManager
因为它不适合你想要实现的目标,所以我以编程方式更新圆的半径。
所以在这个例子中,当加载 map 时,用户会看到一个指针光标,当他按下鼠标按钮时,他将开始绘制一个以你的 static_position
为中心的圆。和 radius
新的 circle
是根据他点击的位置来确定的。
该示例包括几何库(在获取 Google map API 时注意 &libraries=geometry
)并利用它的 google.maps.geometry.spherical.computeDistanceBetween()
函数计算您的中心与用户刚刚单击以获取半径的位置之间的距离(以米为单位)。如果用户没有立即释放按钮而是四处移动鼠标,圆圈将根据用户光标的移动自动调整其半径。用户松开鼠标后,可以拖动 map ,圆圈保持可编辑状态进行调整。
示例(只需在 map 上按鼠标左键即可开始绘图。为了获得更好的体验,请在full page
模式下运行):
var map = null;
function initialize(){
var static_position = new google.maps.LatLng(-34.397, 150.644);
var the_circle = null;
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: static_position,
zoom: 8,
draggable: false,
draggableCursor:'pointer'
});
var mousemove_handler;
google.maps.event.addListener(map, 'mouseup', function(e) {
if(mousemove_handler) google.maps.event.removeListener(mousemove_handler);
map.setOptions({draggable:true, draggableCursor:''}); //allow map dragging after the circle was already created
the_circle.setOptions({clickable:true});
});
google.maps.event.addListenerOnce(map, 'mousedown', function (mousedown_event) {
var radius = google.maps.geometry.spherical.computeDistanceBetween(static_position, mousedown_event.latLng); //get distance in meters between our static position and clicked position, which is the radius of the circle
the_circle = createCircle(static_position, radius); //create circle with center in our static position and our radius
mousemove_handler = google.maps.event.addListener(map, 'mousemove', function(mousemove_event) { //if after mousedown user starts dragging mouse, let's update the radius of the new circle
var new_radius = google.maps.geometry.spherical.computeDistanceBetween(static_position, mousemove_event.latLng);
console.log(new_radius);
the_circle.setOptions({radius:new_radius});
});
});
}
google.maps.event.addDomListener(window, 'load', initialize);
function createCircle(center, radius) {
var circle = new google.maps.Circle({
fillColor: '#ffffff',
fillOpacity: .6,
strokeWeight: 1,
strokeColor: '#ff0000',
draggable: false,
editable: true,
map: map,
center: center,
radius: radius,
clickable:false
});
google.maps.event.addListener(circle, 'radius_changed', function (event) {
console.log('circle radius changed');
});
google.maps.event.addListener(circle, 'center_changed', function (event) {
if(circle.getCenter().toString() !== center.toString()) circle.setCenter(center);
});
return circle;
}
<script src="//maps.google.com/maps/api/js?sensor=false&libraries=geometry&dummy=.js"></script>
<body style="margin:0px; padding:0px;">
<div id="map-canvas" style="height:400px; width:500px;"></div>
</body>
关于javascript - Google Maps JS API - 绘制具有静态中心的可调整大小的圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37338085/
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: How to align a to the middle of the page 这是一个简单的问题,应该有一个简
我想知道如何在屏幕中央的ListView中生成2个itens。 class _CategoriesState extends State { List categories = ["Anterio
我需要修复 UICollectionView 的一个小问题,当在 6s 设备尺寸上时,我得到如下布局: 但是,我想知道将它们居中以使其成为两条线的最佳方法是什么,或者我应该将它们缩小一点以便可以放置其
我尝试在 UIImageView 中居中 CAShapeLayer 但没有成功,我找到了解决方案,将其(CAShapeLayer)添加到 UIVIew,然后将 UIVIew 添加到 ImageView
一直在从线性布局和相对布局切换,因为我想实现图像的居中。 显示图片:
* { margin:0; padding:0; } /** General Style Info **/ body { background: #003d4c; co
我目前正在尝试修改我在 Wordpress 上的 Royal Slider 插件 (http://dimsemenov.com/plugins/royal-slider/) 我的目标是将所有标题的文本
我已经坚持了一段时间,因此简化了我的要求。当您单击标记时,信息窗口将打开,当用户缩放时,我希望该标记位于 map 的中心。这不起作用,但我认为它很接近: function bindInfoWindow
/* Linked Styles */ body { padding: 0 !important;
这个问题在这里已经有了答案: How do I center floated elements? (12 个答案) 关闭 7 年前。
这个问题在这里已经有了答案: Is there an equivalent to background-size: cover and contain for image elements? (1
我试图让我的页眉停留在页面的中间,不管我在什么窗口大小。 我试过使用 Bootstrap。 StackOverflow 还有这个 CSS。 .section-t
我有一个 1600 像素宽的页面。主要区域虽然只有 900 像素宽。我有一个导航应该固定在页面的中心(它是)。我的问题是当我打开页面时,页面固定在左侧而不是在打开时居中。当用户访问该网站时,我需要做什
我正在尝试找到 View 的中心。对于非旋转 View ,该值是正确的,但对于旋转 View ,它不正确,因为中心 (0,0) 正在旋转。在缩放的情况下,即使缩放后宽度和高度也保持不变 我正在使用以下
预期效果是将 Kartennummer 和 Passwort 集中。 这怎么可能? 我为此使用了一个自定义类: import 'package:flutter/material.dart'; impo
我管理着许多 Maven 项目。他们中的大多数部署到我们的内部 maven 存储库。现在我想开始向 Maven Central 发布一个项目。到目前为止,我有一个父 POM,它指定了我们内部存储库的
我试图锚定两个进展,但我看不到获得预期结果的方法。 我希望左边的进度条固定在左边,右边的条固定在中心固定(如下图所示) (下图显示调整大小的表格) 我尝试将控件放在具有各种 anchor 的停靠面板上
我正在玩 Angular 模态 ui 对话框。我想知道有什么方法可以让它居中?我发现了一个类似的问题: Twitter Bootstrap - Center Modal Dialog 但无法使其工作,
是否可以将值标签放置在条形上,使它们位于条形的中心? 如果我设置条形 align: "center",则条形上的标签将关闭且不居中。 $(function() { var d
http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-signalr-20-s
我是一名优秀的程序员,十分优秀!