我有一个从用户数据动态生成的叠加层,所以我需要知道如何找到该叠加层的中心.
目前,我只使用叠加层中的第一个坐标,但这实际上并不代表叠加层的中心.因此,当我加载地图时,它不会在叠加层上居中.
有没有人有一个很好的方法可以通过计算中心而不是硬编码来将地图集中在叠加层上?
var latlng = new google.maps.LatLng(38.269239, -122.276010);
var myOptions = {
zoom: 15,//Calculate this somehow?
center: latlng,// Calculate value from array of coordinates?
mapTypeId: google.maps.MapTypeId.HYBRID
};
Run Code Online (Sandbox Code Playgroud) 我想使用一些基于Google Map v3的地图和一些自定义折线,并使这些线条中的一些点缀或虚线.我似乎无法找到任何办法.是否可能,如果可能,怎么样?
我正在绘制地图中两点之间的路线.我这样得到了积分:
StringBuilder urlString = new StringBuilder();
urlString.append("http://maps.googleapis.com/maps/api/directions/json");
urlString.append("?origin=");// from
urlString.append(Double.toString(src.latitude));
urlString.append(",");
urlString.append(Double.toString(src.longitude));
urlString.append("&destination=");// to
urlString.append(Double.toString(dest.latitude));
urlString.append(",");
urlString.append(Double.toString(dest.longitude));
urlString.append("&sensor=false&mode=");
if (tipo != null) {
urlString.append(tipo);
}
return urlString.toString;
Run Code Online (Sandbox Code Playgroud)
我收到了Google的回复,并获得了JSON:
resp = new JSONObject(builder.toString());
Log.i("Location", "Contenido del kml: "+resp);
JSONArray routeObject = resp.getJSONArray("routes");
JSONObject routes = routeObject.getJSONObject(0);
JSONObject overviewPolylines = routes
.getJSONObject("overview_polyline");
String encodedString = overviewPolylines.getString("points");
ArrayList<LatLng> puntos=decodePoly(encodedString);
Run Code Online (Sandbox Code Playgroud)
我从谷歌获得的回复:(采用JSON格式):
Response: {"status":"OK","routes":[{"waypoint_order":[],"summary":"R-3 and A-3","bounds":{"southwest":{"lng":-3.676540000000001,"lat":40.00040000000001},"northeast":{"lng":-2.99933,"lat":40.43357}},"legs":[{"duration":{"value":3267,"text":"54 mins"},"distance":{"value":85039,"text":"85.0 km"},"end_location":{"lng":-2.99933,"lat":40.00040000000001},"start_address":"Calle del General Díaz Porlier, 91, 28006 Madrid, Spain","end_address":"Camino Veinticuatro, 2, 16400 Tarancón, Cuenca, Spain","start_location":{"lng":-3.676540000000001,"lat":40.43331000000001},"via_waypoint":[],"steps":[{"html_instructions":"Head <b>north<\/b> on <b>Calle …
Run Code Online (Sandbox Code Playgroud) 小背景.我有一个导航设置,当你点击某个导航项时,它会markers
在地图上创建.如果单击其他导航项,则会删除上一个导航项markers
并设置新项.
那么现在我正在努力polylines
并试图在这里创建相同的概念polylines
,但是我遇到了困难.这是我有的:
// Global variable for array of lines
var points= [];
Run Code Online (Sandbox Code Playgroud)
设置我的观点.
line1 = new google.maps.LatLng(line1Start, line1Finish);
line2 = new google.maps.LatLng(line2Start, line2Finish);
line3 = new google.maps.LatLng(line3Start,line3Finish);
points.push(line1, line2, line3);
Run Code Online (Sandbox Code Playgroud)
设置我的折线.
var polyline = new google.maps.Polyline({
path:points,
strokeColor:"#FF0000",
strokeOpacity:1.0,
strokeWeight:2
});
Run Code Online (Sandbox Code Playgroud)
用线初始化地图.
polyline.setMap(map);
Run Code Online (Sandbox Code Playgroud)
一切顺利.线条被创建并显示在我的标记之间.现在让我们删除它们(或不...)
function removeLines() {
if (points) {
points.length = 0;
}
points = [];
}
Run Code Online (Sandbox Code Playgroud)
removeLines()在函数的开头被调用以清除它们,然后设置新的.这确实清除了我在点数组中的点,但是在地图本身上polylines
仍然显示并且不会像我的标记那样消失.
是什么赋予了?!
我正在研究一个记录笔画的应用程序,你用指点设备绘制它.
在上图中,我画了一个笔画,其中包含453个数据点.我的目标是在保持原始笔划形状的同时大幅减少数据点的数量.
对于那些感兴趣的人,上面描绘的笔画坐标可以作为GitHub的要点.
事实上,Adobe Illustrator可以很好地实现我想要实现的目标.如果我在Illustrator中绘制类似的笔触(使用书法笔刷),则生成的形状将简化为我们在下面看到的内容.绘制笔划时,它看起来与我的应用程序非常相似.释放鼠标按钮后,曲线将简化为我们在此处看到的内容:
我们可以看到,笔划只有14个数据点.虽然还有其他控制点可以定义贝塞尔样条曲线的倾斜度(或者它们正在使用的任何样条曲线).在这里,我们可以看到一些控制点:
我已经研究过像Ramer-Douglas-Peucker算法这样的算法,但这些算法似乎只从输入集中删除了点.如果我没有弄错的话,我正在寻找的方法也必须在集合中引入新的点来实现所需的曲线.
我遇到过类似iPhone平滑草图绘制算法的问题.但那些似乎专注于从一小组输入点创建平滑曲线.我觉得我有相反的情况.
我有一个场景,我必须突出边框并在地理编码后遮蔽州或城市(当我得到lang和lat时).
我怎么能这样做,我是否需要有一个城市的完整信息用折线围绕它?或者有没有一种方法可以让map API为我做到这一点.
我想在谷歌地图中绘制一个动画(测地线)折线,有点像这样:http://planefinder.net/route/SFO/
我发现了很多关于如何沿折线设置符号动画的教程,但没有关于将折线本身从源设置到目标的动画.
任何提示?我应该从哪里开始?
任何帮助都非常感谢.
我有一个随机纬度和经度点的列表,我正在他们之间绘制一条路线.我的问题是如何在谷歌地图中绑定这条路线,我在实用方法下面做了
public static void drawRouteIntoMap(final List<? extends MapHelper> position, final GoogleMap googleMap) {
/*List<MapHelper> position = new ArrayList<MapHelper>();
for (int i = lastPosition; i < maps.size(); i++) {
position.add(maps.get(i));
}*/
if (position.size() > 0 && Validator.isNotNull(googleMap)) {
googleMap.clear();
List<PolylineOptions> polylineOptionses = new ArrayList<PolylineOptions>();
PolylineOptions option = null;
Boolean lastPause = null;
for (MapHelper map : position) {
if (map.isPause()) {
if (Validator.isNull(lastPause) || !lastPause) {
option = new PolylineOptions().width(5).color(Color.rgb(255, 0, 155)).geodesic(true);
polylineOptionses.add(option);
}
option.add(new LatLng(map.getLatitude(), map.getLongitude()));
} else {
if …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个谷歌地图,用户可以在其中绘制他走/跑/骑自行车的路线,看看他跑了多久.GPolyline
使用它的getLength()
方法的类在这方面非常有用(至少对于Google Maps API V2),但我想根据距离添加标记,例如1公里,5公里,10公里等的标记,但它似乎没有明显的方法可以根据线的多远来找到折线上的点.有什么建议?
我正在研究这个表面项目,我们有一个bing贴图控件,我们希望通过数据绑定在地图上绘制折线.
发生的奇怪行为是,当我单击"添加"按钮时,地图上没有任何反应.如果我稍微移动地图,则会在地图上绘制折线.另一种有效的方案是单击添加按钮一次,没有任何反应,再次单击它会绘制两条折线.(在我的手册集中,我有4个LocationCollections),因此第3次点击和第4次点击同样会发生两条线的绘制.
我完全不知道在哪里可以解决这个问题.我已经尝试订阅Layoutupdated事件,这两种情况都会发生.还向observablecollection添加了一个collectionchanged事件,以查看是否触发了add,并且是触发了它.我尝试的另一件事是将折线更改为图钉并从管道视图模型中的位置集合中获取第一个位置,而不是预期的工作.
我已经上传了一个示例项目,如果你想看看自己发生了什么.
真的希望有人能指出我正确的方向,因为我不再有线索了.
您可以在下面找到我编写的代码:
我有以下viewmodels:
MainViewModel
public class MainViewModel
{
private ObservableCollection<PipelineViewModel> _pipelines;
public ObservableCollection<PipelineViewModel> Pipes
{
get { return _pipelines; }
}
public MainViewModel()
{
_pipelines = new ObservableCollection<PipelineViewModel>();
}
}
Run Code Online (Sandbox Code Playgroud)
PipelineViewModel具有实现INotifyPropertyChanged的Locations集合:
PipelineViewModel
public class PipelineViewModel : ViewModelBase
{
private LocationCollection _locations;
public string Geometry { get; set; }
public string Label { get; set; }
public LocationCollection Locations
{
get { return _locations; }
set
{
_locations = value;
RaisePropertyChanged("Locations");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的XAML如下所示: …