我需要在点击标记的任何点周围做一个缓冲区/圆圈。我遵循的代码是https://www.codeproject.com/Articles/587199/Draw-Cirlce-Around-Marker-in-Google-Map。我已经提到了有关这些问题的先前提出的问题,但未能找到满意的答案。我要求所有能够回答的人请分享,因为这会有很大的帮助。提前致谢。我添加了显示错误的脚本文件。
<script src="bootstrap-3.3.7-dist/jquery-3.2.1%20(2).js"> </script>
<script>
var map;
var circle;
var marker;
var currentlatlng = new google.maps.LatLng(23.06368, 72.53135);
function loadMap() {
setLatLongValue();
var currentlatlng = new google.maps.LatLng(23.06368, 72.53135);
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 16,
center: currentlatlng,
mapTypeId: 'terrain',
mapTypeControl: true,
navigationControl: true
});
var marker = new google.maps.Marker({
position: currentlatlng,
draggable: true,
map: map
});
}
function setLatLongValue() {
jQuery('#txtPointA1').val(currentlatlng.lat());//#txtPointA1
jQuery('#txtPointA2').val(currentlatlng.lng());
}
marker.addListener('click', function (event) {
drawCircle(event.latLng);
});
function drawCircle() {
if (circle != undefined)
circle.setMap(null);
var radius = 200;
if (jQuery('#txtPointB1').val() != '' && !isNaN(jQuery('#txtPointB1').val()) && parseInt(jQuery('#txtPointB1').val()) > 0) {
radius = parseInt(jQuery('#txtPointB1').val());
}
jQuery('#txtPointB1').val(radius.toString());
var options = {
strokeColor: '#800000',
strokeOpacity: 1.0,
strokeWeight: 1,
fillColor: '#C64D45',
fillOpacity: 0.5,
map: map,
center: currentlatlng,
radius: radius
};
circle = new google.maps.Circle(options);
}
$(window).load(function () {
loadMap();
setLatLongValue();
drawCircle();
});
//$(document).ready(function () {
// loadMap();
// setLatLongValue();
// //setMarker();
// drawCircle();
//});
</script>
<script async
src="https://maps.googleapis.com/maps/api/js?key=KEY&callback=loadMap">
</script>
答案 0 :(得分:3)
由于此声明
,你得到的是'未捕获的ReferenceError:未定义谷歌'var currentlatlng = new google.maps.LatLng(23.06368, 72.53135);
在执行此代码行时,谷歌尚未定义。我建议将该语句放在loadMap()函数中。
请查看此工作示例:http://jsbin.com/lukexag/4/edit?html,css,js,output
以下是代码段:
var map;
var circle;
var marker;
var currentlatlng;
function loadMap() {
setLatLongValue();
currentlatlng = new google.maps.LatLng(23.06368, 72.53135);
map = new google.maps.Map(document.getElementById('map'), {
zoom: 16,
center: currentlatlng,
mapTypeId: 'terrain',
mapTypeControl: true,
navigationControl: true
});
var marker = new google.maps.Marker({
position: currentlatlng,
draggable: true,
map: map
});
marker.addListener('click', function(event) {
drawCircle(event.latLng);
});
setLatLongValue();
drawCircle();
}
function setLatLongValue() {
// jQuery('#txtPointA1').val(currentlatlng.lat()); //#txtPointA1
// jQuery('#txtPointA2').val(currentlatlng.lng());
}
function drawCircle() {
var radius = 200;
if (jQuery('#txtPointB1').val() !== '' && !isNaN(jQuery('#txtPointB1').val()) && parseInt(jQuery('#txtPointB1').val()) > 0) {
radius = parseInt(jQuery('#txtPointB1').val());
}
jQuery('#txtPointB1').val(radius.toString());
var options = {
strokeColor: '#800000',
strokeOpacity: 1.0,
strokeWeight: 1,
fillColor: '#C64D45',
fillOpacity: 0.5,
map: map,
center: currentlatlng,
radius: radius
};
circle = new google.maps.Circle(options);
}
#map {
width: 500px;
height: 500px;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Sample</title>
</head>
<body>
<div id="map"></div>
<script src="bootstrap-3.3.7-dist/jquery-3.2.1%20(2).js">
</script>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script async src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCKQX3cyZ7pVKmBwE8wiowivW9qH62AVk8&callback=loadMap">
</script>
</body>
</html>
更新:Radius正在运行