Javascript 在谷歌地图中基于经纬度绘制三角形

Javascript 在谷歌地图中基于经纬度绘制三角形,javascript,google-maps,shape,google-polyline,Javascript,Google Maps,Shape,Google Polyline,我需要在谷歌地图中创建一条三角形多边形线。但我只有一个纬度和经度。因此,我只是创建了随机值来在谷歌地图中创建一个形状。但有时形状差异太大了。如何按一个纬度和一个经度绘制三角形形状。我只是引用了这个 这是我用来在谷歌地图上画三角形的代码 var geocoder = new google.maps.Geocoder(); var address = document.getElementById('valtxtaddres').value; console.log("Address is:"+ad

我需要在谷歌地图中创建一条三角形多边形线。但我只有一个纬度和经度。因此,我只是创建了随机值来在谷歌地图中创建一个形状。但有时形状差异太大了。如何按一个纬度和一个经度绘制三角形形状。我只是引用了这个

这是我用来在谷歌地图上画三角形的代码

var geocoder = new google.maps.Geocoder();
var address = document.getElementById('valtxtaddres').value;
console.log("Address is:"+address);
if(address!=''){
geocoder.geocode( { 'address': address}, function(results, status) {

      if (status == google.maps.GeocoderStatus.OK) {
        var latitude = results[0].geometry.location.lat().toString();
        var longitude = results[0].geometry.location.lng().toString();
       // alert(latitude);
       console.log("Lng is:"+longitude);
        console.log("Math value:"+(Math.floor(Math.random()*90000) + 10000));
        var triangle2Lat = latitude.slice(0, latitude.length-5)+(Math.floor(Math.random()*90000) + 10000);
        var triangle2Lng = longitude.slice(0, longitude.length-11)+(Math.floor(Math.random()*90000) + 10000);
        var triangle3Lat = latitude.slice(0, latitude.length-5)+(Math.floor(Math.random()*90000) + 10000);
        var triangle3Lng = longitude.slice(0, longitude.length-11)+(Math.floor(Math.random()*90000) + 10000);
         console.log("triangle2Lat is:"+triangle2Lat);
        console.log("triangle2Lng is:"+triangle2Lng);
        console.log("triangle3Lat is:"+triangle3Lat);
        console.log("triangle3Lng is:"+triangle3Lng); 
        var triangleCoords = [
            new google.maps.LatLng(latitude, longitude),
            new google.maps.LatLng(triangle2Lat, triangle2Lng),
            new google.maps.LatLng(triangle3Lat, triangle3Lng)
          ];
myPolygon = new google.maps.Polygon({
    paths: triangleCoords,
    draggable: true, // turn off if it gets annoying
    editable: true,
    strokeColor: '#FF0000',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#FF0000',
    fillOpacity: 0.35
  });

  myPolygon.setMap(gmap);
      } 
    }); 
}

可以使用球形几何体库绘制三角形,其顶点距离地理编码点250米,方向为0度(北)、120度(东南)和-120度(西南)

代码片段:

函数初始化(){
var gmap=new google.maps.Map(
document.getElementById(“地图画布”){
中心:新google.maps.LatLng(37.4419,-122.1419),
缩放:16,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var geocoder=new google.maps.geocoder();
var address=document.getElementById('valtxtaddres')。值;
console.log(“地址为:”+地址);
如果(地址!=''){
地理编码({
“地址”:地址
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
var mark=new google.maps.Marker({
位置:结果[0]。geometry.location,
地图:gmap,
标题:“C”,
图标:{
url:“https://maps.gstatic.com/intl/en_us/mapfiles/markers2/measle.png",
大小:新谷歌地图大小(7,7),
主播:新google.maps.Point(3.5,3.5)
}
});
var triangle1=google.maps.geometry.spheremic.computeOffset(结果[0].geometry.location,250,0);
var triangle2=google.maps.geometry.spheremic.computeOffset(结果[0].geometry.location,250120);
var triangle3=google.maps.geometry.spheremic.computeOffset(结果[0].geometry.location,250,-120);
log(“triangle1是:”+triangle1.toulvalue(6));
log(“triangle2是:”+triangle2.toulvalue(6));
log(“triangle3是:”+triangle3.toulvalue(6));
var triangleCoords=[triangle1,triangle2,triangle3];
myPolygon=新建google.maps.Polygon({
路径:三角门,
//draggable:true,//如果它变得烦人,请关闭它
//是的,
strokeColor:“#FF0000”,
笔划不透明度:0.8,
冲程重量:2,
填充颜色:'#FF0000',
不透明度:0.35
});
myPolygon.setMap(gmap);
}
});
}
}
google.maps.event.addDomListener(窗口“加载”,初始化)
html,
身体{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}
#地图画布{
身高:90%;
宽度:100%;
}

您可以使用球形几何体库绘制一个三角形,其顶点距地理编码点250米,方向为0度(北)、120度(东南)和-120度(西南)

代码片段:

函数初始化(){
var gmap=new google.maps.Map(
document.getElementById(“地图画布”){
中心:新google.maps.LatLng(37.4419,-122.1419),
缩放:16,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var geocoder=new google.maps.geocoder();
var address=document.getElementById('valtxtaddres')。值;
console.log(“地址为:”+地址);
如果(地址!=''){
地理编码({
“地址”:地址
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
var mark=new google.maps.Marker({
位置:结果[0]。geometry.location,
地图:gmap,
标题:“C”,
图标:{
url:“https://maps.gstatic.com/intl/en_us/mapfiles/markers2/measle.png",
大小:新谷歌地图大小(7,7),
主播:新google.maps.Point(3.5,3.5)
}
});
var triangle1=google.maps.geometry.spheremic.computeOffset(结果[0].geometry.location,250,0);
var triangle2=google.maps.geometry.spheremic.computeOffset(结果[0].geometry.location,250120);
var triangle3=google.maps.geometry.spheremic.computeOffset(结果[0].geometry.location,250,-120);
log(“triangle1是:”+triangle1.toulvalue(6));
log(“triangle2是:”+triangle2.toulvalue(6));
log(“triangle3是:”+triangle3.toulvalue(6));
var triangleCoords=[triangle1,triangle2,triangle3];
myPolygon=新建google.maps.Polygon({
路径:三角门,
//draggable:true,//如果它变得烦人,请关闭它
//是的,
strokeColor:“#FF0000”,
笔划不透明度:0.8,
冲程重量:2,
填充颜色:'#FF0000',
不透明度:0.35
});
myPolygon.setMap(gmap);
}
});
}
}
google.maps.event.addDomListener(窗口“加载”,初始化)
html,
身体{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}
#地图画布{
身高:90%;
宽度:100%;
}

var geocoder = new google.maps.Geocoder();
var address = document.getElementById('valtxtaddres').value;
console.log("Address is:" + address);
if (address != '') {
  geocoder.geocode({
    'address': address
  }, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      var triangle1 = google.maps.geometry.spherical.computeOffset(results[0].geometry.location, 250, 0);
      var triangle2 = google.maps.geometry.spherical.computeOffset(results[0].geometry.location, 250, 120);
      var triangle3 = google.maps.geometry.spherical.computeOffset(results[0].geometry.location, 250, -120);
      var triangleCoords = [triangle1, triangle2, triangle3];
      myPolygon = new google.maps.Polygon({
        path: triangleCoords,
        strokeColor: '#FF0000',
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: '#FF0000',
        fillOpacity: 0.35
      });
      myPolygon.setMap(gmap);
    }
  });
}