关于自动完成位置搜索的任何好建议,与Google或Bings位置数据等内容集成?
我想要在注册时捕获我的用户的位置,目前我有一个自由文本输入框.我想要某种自动完成,引导用户输入更多的消毒信息,理想情况下我也希望对用户进行地理编码.
只是想知道如何在windows phone 7应用程序中为地图编程可拖动图钉有任何合适的资源.我看起来很好看,只能找到有关如何为浏览器应用程序执行此操作的信息.
理想情况下,我希望用户能够点击图钉并将其拖动到地图上的某个位置,但是,我可以想到这样做的唯一方法是让用户拖动地图并且图钉保留在地图的中心.
我正在使用带有Ajax的Bing Maps,我有大约80,000个位置来放置图钉.该功能的目的是允许用户搜索路易斯安那州的餐馆,然后单击图钉以查看健康检查信息.
显然,一次在地图上有80,000个引脚并没什么好处,但我很难找到解决这个问题的最佳方法.另一个问题是这些位置之间的距离非常小(所有80,000都在路易斯安那州).我知道我可以使用群集来防止地图混乱,但似乎仍然会导致性能问题.
我目前要做的是在某个缩放级别之前不显示任何引脚,然后只显示当前视图中的引脚.我目前正在尝试这样做的方法是使用viewchangeend事件来查找缩放级别和地图的边界,然后查询数据库(通过Web服务)以查找该范围内的任何点.
我觉得这样做的方式不对.有没有更好的方法来管理这么多的数据?尝试最初加载所有点然后手头有数据而不必每次地图移动时都要点击我的网络服务会更好吗?如果是这样,我该怎么办呢?
我无法找到问题的答案,这通常意味着我在问错误的问题.如果有人能帮我找出正确的问题,我将不胜感激.
这是XAML代码:
<maps:Map x:Name="NearbyMap"
Center="{Binding MapCenter, Mode=TwoWay}"
ZoomLevel="{Binding ZoomLevel, Mode=TwoWay}"
>
<maptk:MapExtensions.Children>
<maptk:MapItemsControl Name="StoresMapItemsControl" ItemsSource="{Binding Treks}">
<maptk:MapItemsControl.ItemTemplate>
<DataTemplate>
<maptk:Pushpin x:Name="RouteDirectionsPushPin" GeoCoordinate="{Binding Location}" Visibility="Visible" Content="test"/>
</DataTemplate>
</maptk:MapItemsControl.ItemTemplate>
</maptk:MapItemsControl>
<maptk:UserLocationMarker x:Name="UserLocationMarker" Visibility="Visible" GeoCoordinate="{Binding MyLocation}"/>
</maptk:MapExtensions.Children>
</maps:Map>
xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
xmlns:maptk="clr-namespace:Microsoft.Phone.Maps.Toolkit;assembly=Microsoft.Phone.Controls.Toolkit"
Run Code Online (Sandbox Code Playgroud)
PushPinModel有一个属性Location,它是一个GeoCoordinate.徒步旅行是一个ObservableCollection<PushPinModel>.我运行此代码,只显示UserLocationMarker,这是我当前的位置.
我现在已经调用了使用Angular 4 Http服务制作的Bing Maps,它正常工作:
this.http.get("{absolute URL of Bing Maps REST Locations, with options and key}")
Run Code Online (Sandbox Code Playgroud)
我正在尝试更改调用以使用Angular 4.3中引入的HttpClient服务,但在尝试相同的代码时:
this.httpClient.get("{absolute URL of Bing Maps REST Locations, with options and key}")
Run Code Online (Sandbox Code Playgroud)
然后请求与预检OPTIONS请求一起发送,而bing map显然拒绝它.
我试图观察请求而不是正文,请求文本响应,并强制Accept标头文本,但没有成功.
Http请求的标头(工作):
Accept: application/json, text/plain, */*
Origin: http://localhost:4200
Referer: http://localhost:4200/
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Run Code Online (Sandbox Code Playgroud)
HttpClient请求的标头(不工作):
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
Origin: http://localhost:4200
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Run Code Online (Sandbox Code Playgroud)
有关为什么HttpClient请求与Http请求如此不同的任何想法?如何强制HttpClient跳过预检OPTIONS请求?我错过了什么吗?
在此先感谢您的帮助
我工作的一个团队目前处于不幸的境地.他们花了很多时间在他们的网站上集成谷歌地图控件,但他们没有发现在https网站上运行谷歌地图你必须许可控制(并且它不便宜)和bing一样地图.
所以我的问题是你知道任何更便宜/免费的地图控件,如谷歌或冰映射?
如何在Bing Maps控件中添加"你在这里"标记?在电话上,这表示为正方形内的圆圈,然后有一个表示位置精度的外圆.
看起来你可以使用图钉和polgon来做,但我希望有一个更容易/更好的方法
我正在使用Bing Maps v7控件.
我有一系列纬度/经度点.(类型Microsoft.Map.Location)
从该数组中,我可以使用生成矩形和矩形的中心 LocationRect.fromLocations()
使用Map构造函数创建地图时,我可以使用该矩形的中心来居中地图.它看起来像这样:
var LLA = [
new Microsoft.Maps.Location(43.386,-111.6123),
new Microsoft.Maps.Location(43.4929, -112.0349),
new Microsoft.Maps.Location(43.2609,-115.7811),
...
];
var r = Microsoft.Maps.LocationRect.fromLocations(LLA);
var mapOptions = {
credentials : bingMapsKey,
center : r.center,
mapTypeId : Microsoft.Maps.MapTypeId.road,
zoom : 7
},
elt = document.getElementById('out2');
var map = new Microsoft.Maps.Map(elt, mapOptions);
Run Code Online (Sandbox Code Playgroud)
这是有效的,创建的地图以这些点为中心.如何设置Bing Map的缩放级别,以便显示整个矩形?
我正在使用v7 Bing Maps Javascript"控件"(我不知道为什么它被称为"控件"......).我正在打电话Microsoft.Maps.Map.setView({bounds: bounds}),它没有按照我的期望或愿望工作.
我有一组多边形,其点数跨越第180个子午线.一个例子是新西兰岛屿的边界 - 其中一些位于第180个子午线以西,一些部分(查塔姆岛)位于东部.
当我创建一个带有这些边界和调用的多边形时setView(),地图会放大waaaaaay.

为什么?以及如何避免它?
此页面提供了该问题的演示.
这是代码.
var map, MM = Microsoft.Maps;
function showMap(m) {
var options = {
mapTypeId: MM.MapTypeId.road // aerial,
// center will be recalculated
// zoom will be recalculated
},
map1 = new MM.Map(m, options);
return map1;
}
function doubleclickCallback(e) {
e.handled = true;
var bounds = map.getBounds();
map.setView({ bounds: bounds });
}
function init() {
var mapDiv = document.getElementById("map1");
map = showMap(mapDiv);
MM.Events.addHandler(map, …Run Code Online (Sandbox Code Playgroud) 我有这个功能,根据用户输入的地址返回bing地址建议.我已经指定了userLocation,但结果并不像我想象的那样准确.我还有什么额外的事吗?如果必须,我可以手动指定州或邮政编码,但我宁愿避免进行后期处理.
例如,键入111将返回111,NY,111 Sweden,111 Denmark的结果.我想将此限制为仅限于美国,并且仅限于几个我可以硬编码的状态.当我在数据中手动指定postalCode的选项时,它会覆盖我在查询中使用的内容.
var geolocate = function(options) {
$.ajax({
url: "http://dev.virtualearth.net/REST/v1/Locations",
dataType: "jsonp",
data: {
key: "KEY",
q: options.address,
userLocation: options.latitude + ',' + options.longitude,
maxResults: options.maxResults,
},
jsonp: "jsonp",
success: function(data) {
if (options.success instanceof Function) {
options.success(data);
}
},
error: function(xhr, status, text) {
alert('ERROR:\n');
}
});
};
Run Code Online (Sandbox Code Playgroud) bing-maps ×10
google-maps ×2
javascript ×2
jquery ×2
pushpin ×2
ajax ×1
angular ×1
autocomplete ×1
bing-api ×1
c# ×1
geolocation ×1
https ×1
mvvm ×1
mvvm-light ×1
silverlight ×1
ssl ×1