每x Km方向添加里程碑(标记) [英] Add milestones (markers) every x Km on direction

查看:182
本文介绍了每x Km方向添加里程碑(标记)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在谷歌地图API给出的方向的多段线上每5或10公里添加一个标记。
是这样的:



http: //www.geocodezip.com/v3_polyline_example_kmmarkers_0.html



但是用google的方向

解决方案

我发现了一个像魅力一样的公式。它每隔8米就会在给定点之间添加一个标记。

我从这里得到公式:如何计算两个给定点和给定距离之间的点?



PointF pointA,pointB;

  var diff_X = pointB.X  -  pointA.X; 
var diff_Y = pointB.Y - pointA.Y;
int pointNum = 8;

var interval_X = diff_X /(pointNum + 1);
var interval_Y = diff_Y /(pointNum + 1);

列表< PointF> pointList = new List< PointF>();
for(int i = 1; i <= pointNum; i ++)
{
pointList.Add(new PointF(pointA.X + interval_X * i,pointA.Y + interval_Y * i ));
}



Android
我的最终结果翻译

  // GeoPoint PointF,pointA,pointB; 

Double diff_X = lat2 - lat1;
Double diff_Y = lon2 - lon1;
int pointNum = 8;

Double interval_X = diff_X /(pointNum + 1);
Double interval_Y = diff_Y /(pointNum + 1);

// ArrayList< GeoPoint> geoPoints = new ArrayList<>();
列表< GeoPoint> pointList = new ArrayList<>();
for(int i = 1; i <= pointNum; i ++)
{
GeoPoint g = new GeoPoint(lat1 + interval_X * i,lon1 + interval_Y * i);
pointList.add(g);
itemizedLayer.addItem(createMarkerItem(g,R.drawable.ic_my_location));
}


map.map()。updateMap(true);


I want to add a marker every 5 or 10 Kilometer on the polylines of the direction given by google maps api. something like this :

http://www.geocodezip.com/v3_polyline_example_kmmarkers_0.html

but with the google direction's

解决方案

I found a formula that works like a charm. It adds a marker every 8 meter between to given points.

I got the formula from here: How to calculate the points between two given points and given distance?

PointF pointA, pointB;

    var diff_X = pointB.X - pointA.X;
    var diff_Y = pointB.Y - pointA.Y;
    int pointNum = 8;

    var interval_X = diff_X / (pointNum + 1);
    var interval_Y = diff_Y / (pointNum + 1);

    List<PointF> pointList = new List<PointF>();
    for (int i = 1; i <= pointNum; i++)
    {
        pointList.Add(new PointF(pointA.X + interval_X * i, pointA.Y + interval_Y*i));
    }

Android My end result translation

    //GeoPoint PointF, pointA, pointB;

    Double diff_X = lat2 - lat1;
    Double diff_Y = lon2 - lon1;
    int pointNum = 8;

    Double interval_X = diff_X / (pointNum + 1);
    Double interval_Y = diff_Y / (pointNum + 1);

    //ArrayList<GeoPoint> geoPoints = new ArrayList<>();
    List<GeoPoint> pointList = new ArrayList<>();
    for (int i = 1; i <= pointNum; i++)
    {
        GeoPoint g = new GeoPoint(lat1 + interval_X * i, lon1 + interval_Y*i);
        pointList.add(g);
        itemizedLayer.addItem(createMarkerItem(g, R.drawable.ic_my_location));
    }


    map.map().updateMap(true);

这篇关于每x Km方向添加里程碑(标记)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆