Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在谷歌地图中正确定位邮政编码标签_Javascript_Google Maps_Google Maps Api 3_Zipcode_Centroid - Fatal编程技术网

Javascript 在谷歌地图中正确定位邮政编码标签

Javascript 在谷歌地图中正确定位邮政编码标签,javascript,google-maps,google-maps-api-3,zipcode,centroid,Javascript,Google Maps,Google Maps Api 3,Zipcode,Centroid,我在谷歌地图上画了一个邮政编码区域的列表,我试图在这个区域上写一个带有邮政编码的标签。我可以做得很好,除了我使用区域的中心点来定位标签,但是有些区域形状不规则,中心点落在区域本身之外。以下是我的意思的一个例子: 看看邮政编码81151,它是如何显示在邮政编码81123区域的顶部而不是他自己区域的顶部的 有没有人知道一种更好的算法来正确地将邮政编码定位在不规则区域的顶部,而不是使用该区域的质心?几周前,我遇到了一个类似的问题,没有找到任何算法(可能没有) 最后,我找到了一个具有所需数据的fusi

我在谷歌地图上画了一个邮政编码区域的列表,我试图在这个区域上写一个带有邮政编码的标签。我可以做得很好,除了我使用区域的中心点来定位标签,但是有些区域形状不规则,中心点落在区域本身之外。以下是我的意思的一个例子:

看看邮政编码81151,它是如何显示在邮政编码81123区域的顶部而不是他自己区域的顶部的


有没有人知道一种更好的算法来正确地将邮政编码定位在不规则区域的顶部,而不是使用该区域的质心?

几周前,我遇到了一个类似的问题,没有找到任何算法(可能没有)

最后,我找到了一个具有所需数据的fusionTable(我也使用了fusionTable来存储边界,因此很容易合并表)

也许您也可以这样做,快速搜索会得到以下结果:


e、 g.对于zip 81151,坐标位置更靠西,可能这张表适合您的需要

我几周前遇到过类似问题,没有找到任何算法(可能没有)

最后,我找到了一个具有所需数据的fusionTable(我也使用了fusionTable来存储边界,因此很容易合并表)

也许您也可以这样做,快速搜索会得到以下结果:


e、 g.对于zip 81151,坐标位置更靠西,可能此表适合您的需要

您可以使用google.maps.geometry.poly.containsLocation和google.maps.geometry.sphereal.interpolate函数

比如说。获取多边形的边界点和中心点,并使用函数“google.maps.geometry.spheremic.interpolate({centerpoint},{bundaypoint},{distance})” 然后验证结果点是否位于​​具有 “google.maps.geometry.poly.containsLocation({resultPoint},{polygonoObject})”函数

GetBounds函数:

if (!google.maps.Polygon.prototype.getBounds) {
            google.maps.Polygon.prototype.getBounds = function (latLng) {
                var bounds = new google.maps.LatLngBounds();
                var paths = this.getPaths();
                var path;
                for (var p = 0; p < paths.getLength() ; p++) {
                    path = paths.getAt(p);
                    for (var i = 0; i < path.getLength() ; i++) {
                        bounds.extend(path.getAt(i));
                    }
                }
                return bounds;
            }
        }
if(!google.maps.Polygon.prototype.getBounds){
google.maps.Polygon.prototype.getBounds=函数(latLng){
var bounds=new google.maps.LatLngBounds();
var path=this.getpath();
var路径;
对于(var p=0;p
您可以使用google.maps.geometry.poly.containsLocation和google.maps.geometry.sphereal.interpolate函数

比如说。获取多边形的边界点和中心点,并使用函数“google.maps.geometry.spheremic.interpolate({centerpoint},{bundaypoint},{distance})” 然后验证结果点是否位于​​具有 “google.maps.geometry.poly.containsLocation({resultPoint},{polygonoObject})”函数

GetBounds函数:

if (!google.maps.Polygon.prototype.getBounds) {
            google.maps.Polygon.prototype.getBounds = function (latLng) {
                var bounds = new google.maps.LatLngBounds();
                var paths = this.getPaths();
                var path;
                for (var p = 0; p < paths.getLength() ; p++) {
                    path = paths.getAt(p);
                    for (var i = 0; i < path.getLength() ; i++) {
                        bounds.extend(path.getAt(i));
                    }
                }
                return bounds;
            }
        }
if(!google.maps.Polygon.prototype.getBounds){
google.maps.Polygon.prototype.getBounds=函数(latLng){
var bounds=new google.maps.LatLngBounds();
var path=this.getpath();
var路径;
对于(var p=0;p
您正在使用google.maps.LatLngBounds.getCenter()吗?嗨,AJC。我只是在搜索我的查询时看到了这篇文章。您能告诉我如何将这些zipcode编号显示为绘图zipcode上的标签吗。感谢您使用google.maps.LatLngBounds.getCenter()?嗨,AJC。我只是在搜索我的查询时看到了这篇文章。您能告诉我如何将这些zipcode编号显示为绘图zipcode上的标签吗。谢谢汉克斯,这看起来是个好主意。但是,如果您想在地图中显示所有邮政编码,这显然是正确的路线,但是获取和维护该数据可能比一次计算几个邮政编码的位置更复杂。也许我应该澄清一下。谢谢,这看起来是个好主意。但是,如果您想在地图中显示所有邮政编码,这显然是正确的路线,但是获取和维护该数据可能比一次计算几个邮政编码的位置更复杂。也许我应该澄清一下,谢谢!这更像是我在看的。我可以建立一个更优雅的解决方案,只要我对一次计算的邮政编码数量进行限制。谢谢!这更像是我在看的。我能够构建一个更优雅的解决方案,只要我对一次计算的邮政编码数量进行限制。