简体   繁体   English

从初始位置绘制多边形

[英]Drawing a POLYGON from initial position

My problem is: I need to draw with mode POLYGON with a initial point, like a marker or another element.我的问题是:我需要使用带有初始点的模式 POLYGON 进行绘制,例如标记或其他元素。 For example - JSFiddle Example例如 - JSFiddle 示例

With marker: var initialPosition = new google.maps.Marker({ position: { lat: -22.397542, lng: -46.884630 } });带标记: var initialPosition = new google.maps.Marker({ position: { lat: -22.397542, lng: -46.884630 } });

This position is given without any user interaction.这个位置是在没有任何用户交互的情况下给出的。 How can I do that?我怎样才能做到这一点? In my example, how can I draw a polygon starting from marker without click it, making marker position my first polygon point?在我的示例中,如何从标记开始绘制多边形而不单击它,使标记位置成为我的第一个多边形点?

You could do the following: use addListenerOnce to detect a click on the map (only once).您可以执行以下操作:使用addListenerOnce检测地图上的点击(仅一次)。 This will allow to create a Polygon that goes from your marker position, to where the user clicked, and back to the marker position.这将允许创建一个多边形,从您的标记位置到用户单击的位置,然后返回到标记位置。

By setting the editable property to true , you can then move each Polygon point separately, and add segments by dragging the existing segment(s) middle point(s).通过将editable属性设置为true ,您可以单独移动每个 Polygon 点,并通过拖动现有线段中点来添加线段。

Here is a working example:这是一个工作示例:

 function initialize() { var myLatLng = new google.maps.LatLng(46.2, 6.17); var mapOptions = { zoom: 4, center: myLatLng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); var marker = new google.maps.Marker({ position: myLatLng, map: map }); google.maps.event.addListenerOnce(map, 'click', function(e) { var origin = marker.getPosition(); var coords = [ origin, e.latLng, origin, ]; var poly = new google.maps.Polygon({ map: map, paths: coords, editable: true, strokeColor: '#FF0000', strokeOpacity: 0.8, strokeWeight: 2, fillColor: '#FF0000', fillOpacity: 0.35 }); }); } initialize();
 #map-canvas { height: 150px; }
 <div id="map-canvas"></div> <script src="https://maps.googleapis.com/maps/api/js"></script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM