Javascript 从板条点阵列填充Google Maps多边形

Javascript 从板条点阵列填充Google Maps多边形,javascript,google-maps,google-maps-api-3,latitude-longitude,Javascript,Google Maps,Google Maps Api 3,Latitude Longitude,我有一个LatLng格式的坐标数组。我想用这些坐标构造一个多边形。我知道我可以用单独的坐标对多边形进行硬编码,如下所示: var triangleCoords = [ {lat: A, lng: A}, {lat: B, lng: B}, {lat: C, lng: C}] 是否可以将阵列中的LatLng数据点放置到三角形坐标系中,并以这种方式创建多边形 如果我误解了你的问题,请纠正我 Q: 是否可以将阵列中的LatLng数据点放置到三角形坐标系中,并以这种方式创建多边

我有一个LatLng格式的坐标数组。我想用这些坐标构造一个多边形。我知道我可以用单独的坐标对多边形进行硬编码,如下所示:

var triangleCoords = [
    {lat: A, lng: A},
    {lat: B, lng: B},
    {lat: C, lng: C}]

是否可以将阵列中的LatLng数据点放置到三角形坐标系中,并以这种方式创建多边形

如果我误解了你的问题,请纠正我

Q: 是否可以将阵列中的LatLng数据点放置到三角形坐标系中,并以这种方式创建多边形

A:

var map = new google.maps.Map(document.getElementById("map"),
{
    zoom: 4,
    center: new google.maps.LatLng(22.7964, 79.8456),
    mapTypeId: google.maps.MapTypeId.HYBRID
});

var coordinateA = new google.maps.LatLng(18.979026,72.949219);
var coordinateB = new google.maps.LatLng(28.613459,77.255859);
var coordinateC = new google.maps.LatLng(22.512557,88.417969);
var coordinateD = new google.maps.LatLng(12.940322,77.607422);

var coords =
    [
        {lat: coordinateA.lat(), lng: coordinateA.lng() },
        {lat: coordinateB.lat(), lng: coordinateB.lng() },
        {lat: coordinateC.lat(), lng: coordinateC.lng() },
        {lat: coordinateD.lat(), lng: coordinateD.lng() }
    ];

metros = new google.maps.Polygon(
    {
        paths: coords,
        strokeColor: "#0000FF",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#0000FF",
        fillOpacity: 0.26
    });
简短回答:没有。不幸的是,
google.maps.Polygon
代码中没有智能,它会神奇地尝试为您计算指定的
google.maps.LatLng
对象的
lat
lng
坐标

您需要使用
lat()
lng()
api从
google.maps.LatLng
对象返回原始坐标值,并将其插入数组中。没有捷径

示例:

var map = new google.maps.Map(document.getElementById("map"),
{
    zoom: 4,
    center: new google.maps.LatLng(22.7964, 79.8456),
    mapTypeId: google.maps.MapTypeId.HYBRID
});

var coordinateA = new google.maps.LatLng(18.979026,72.949219);
var coordinateB = new google.maps.LatLng(28.613459,77.255859);
var coordinateC = new google.maps.LatLng(22.512557,88.417969);
var coordinateD = new google.maps.LatLng(12.940322,77.607422);

var coords =
    [
        {lat: coordinateA.lat(), lng: coordinateA.lng() },
        {lat: coordinateB.lat(), lng: coordinateB.lng() },
        {lat: coordinateC.lat(), lng: coordinateC.lng() },
        {lat: coordinateD.lat(), lng: coordinateD.lng() }
    ];

metros = new google.maps.Polygon(
    {
        paths: coords,
        strokeColor: "#0000FF",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#0000FF",
        fillOpacity: 0.26
    });
请参阅,以获取一个有效的JSFIDLE示例。
如果我误解了你的问题,请纠正我

Q: 是否可以将阵列中的LatLng数据点放置到三角形坐标系中,并以这种方式创建多边形

A:

var map = new google.maps.Map(document.getElementById("map"),
{
    zoom: 4,
    center: new google.maps.LatLng(22.7964, 79.8456),
    mapTypeId: google.maps.MapTypeId.HYBRID
});

var coordinateA = new google.maps.LatLng(18.979026,72.949219);
var coordinateB = new google.maps.LatLng(28.613459,77.255859);
var coordinateC = new google.maps.LatLng(22.512557,88.417969);
var coordinateD = new google.maps.LatLng(12.940322,77.607422);

var coords =
    [
        {lat: coordinateA.lat(), lng: coordinateA.lng() },
        {lat: coordinateB.lat(), lng: coordinateB.lng() },
        {lat: coordinateC.lat(), lng: coordinateC.lng() },
        {lat: coordinateD.lat(), lng: coordinateD.lng() }
    ];

metros = new google.maps.Polygon(
    {
        paths: coords,
        strokeColor: "#0000FF",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#0000FF",
        fillOpacity: 0.26
    });
简短回答:没有。不幸的是,
google.maps.Polygon
代码中没有智能,它会神奇地尝试为您计算指定的
google.maps.LatLng
对象的
lat
lng
坐标

您需要使用
lat()
lng()
api从
google.maps.LatLng
对象返回原始坐标值,并将其插入数组中。没有捷径

示例:

var map = new google.maps.Map(document.getElementById("map"),
{
    zoom: 4,
    center: new google.maps.LatLng(22.7964, 79.8456),
    mapTypeId: google.maps.MapTypeId.HYBRID
});

var coordinateA = new google.maps.LatLng(18.979026,72.949219);
var coordinateB = new google.maps.LatLng(28.613459,77.255859);
var coordinateC = new google.maps.LatLng(22.512557,88.417969);
var coordinateD = new google.maps.LatLng(12.940322,77.607422);

var coords =
    [
        {lat: coordinateA.lat(), lng: coordinateA.lng() },
        {lat: coordinateB.lat(), lng: coordinateB.lng() },
        {lat: coordinateC.lat(), lng: coordinateC.lng() },
        {lat: coordinateD.lat(), lng: coordinateD.lng() }
    ];

metros = new google.maps.Polygon(
    {
        paths: coords,
        strokeColor: "#0000FF",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#0000FF",
        fillOpacity: 0.26
    });
请参阅,以获取一个有效的JSFIDLE示例。

在这里,我尝试从mysql动态创建多边形google route map,它只对marker有效,但对多边形无效

这是密码

函数initMap()
{
var map=new google.maps.map(document.getElementById('map'){
缩放:5,
中心:{lat:13.36,lng:77.03},
});
var plancoardinates=新数组();
//变量位置=[
//{拉丁美洲:13.367797388285002,液化天然气:77.03707749682616},
//{拉丁美洲:13.341074247677549,液化天然气:77.0394807561035},
//{拉丁美洲:13.379153826558369,液化天然气:77.08685929614256},
//{拉丁美洲:13.367797388285002,液化天然气:77.03707749682616},
// ];
变量位置=[{lat:,lng:}];
for(设i=0;i
在这里,我尝试从mysql动态创建多边形google route map,它只对marker有效,但对多边形无效

这是密码

函数initMap()
{
var map=new google.maps.map(document.getElementById('map'){
缩放:5,
中心:{lat:13.36,lng:77.03},
});
var plancoardinates=新数组();
//变量位置=[
//{拉丁美洲:13.367797388285002,液化天然气:77.03707749682616},
//{拉丁美洲:13.341074247677549,液化天然气:77.0394807561035},
//{拉丁美洲:13.379153826558369,液化天然气:77.08685929614256},
//{拉丁美洲:13.367797388285002,液化天然气:77.03707749682616},
// ];
变量位置=[{lat:,lng:}];
for(设i=0;i