几个月前我建立了一个Winform应用程序,用于安排维修技术人员的约会.我想通过在客户表单上添加客户地址的地图来更新应用程序,然后在技术人员离开办公室时在报告上打印该地图.
我一直在四处寻找,但我还没有找到一个好的解决方案.
我目前有一个客户地址.我想做的是将地址提交到一个热门的在线地图网站,并获得该地区的小地图.我几乎可以使用嵌入式链接功能使用谷歌地图.在为其网站添加地址后,我可以获得以下HTML:
<iframe width="300" height="300" frameborder="0" scrolling="no"
marginheight="0" marginwidth="0"
src="http://maps.google.com/maps?hl=en&ie=UTF8&t=h&g=1193+Presque+Isle+Dr,+Port+Charlotte,+FL+33952&s=AARTsJqsWtjYwJ7ucpVS6UU2EInkRk6JLA&ll=27.012108,-82.087955&spn=0.005735,0.006437&z=16&output=embed">
</iframe>
Run Code Online (Sandbox Code Playgroud)
我的第一个计划是简单地解析这个HTML并插入该地址所需的客户地址,然后在表单上的浏览器对象中显示结果.但是,如果我更改上述iframe中的地址,Google会向我提供"您的客户端无权获取URL ..."消息.
我没有偏好我最终使用哪个地图服务,重要的是该解决方案不能具有相关费用,并且可以从Windows表单中使用.
任何人都有关于如何解决这个问题的想法/建议/资源?
结果:
我最终使用了这里找到的控件.我发现它是一个"好的"解决方案......因为代码不能按原样运行,所以工作很繁琐.我很惊讶地发现没有一个流行的地图API支持winforms.
当网页上的链接转到maps.google.com/?q= http://example.com/mapdata.kml时,如何强制iPhone地图应用程序打开?
如果我打开地图应用程序并专门将http://example.com/mapdata.kml放入查询框中,则会正确加载所有数据.但是,如果我使用http://maps.google.com/?q=http://example.com/mapdata.kml,地图应用程序会加载,但不会加载任何数据,也不会在查询框中显示任何内容.
典型的查询工作,如q = cupertino或q = [纬度,经度].它似乎是破碎的kml链接.
有没有人得到这个工作?这支持吗?你必须对查询进行URI编码吗?
有谁知道如何在谷歌地图v3中获得折线的长度?目前我正在使用Haversine公式,但如果折线符合开始,那么它会计算出最短的长度.有谁知道我怎么能计算折线长度?
非常感谢.标记
有没有人有任何让用户从点a到点b绘制曲线图的例子或来源?
谢谢,亚历克斯
我从谷歌地图api获取地理位置信息时遇到麻烦
代码很简单
$.ajax({
type: "GET",
cache: false,
url: "http://maps.googleapis.com/maps/api/geocode/json",
dataType: "jsonp",
data: {
address: "Ljubljana " + "Slovenia",
sensor: "false"
},
jsonpCallback:'json_response',
success: function(data) {
top.console.debug(data);
$('#location_setter').dialog('close');
},
error: function() {
alert("Error.");
}
});
function json_response(data){
alert("works");
}
Run Code Online (Sandbox Code Playgroud)
我总是得到一个错误.我也直接尝试过(我在某处读到应该在最后设置回调...
$.ajax({
type: "GET",
cache: true,
url: "http://maps.googleapis.com/maps/api/geocode/json?address=Ljubljana Slovenia&sensor=false",
dataType: "jsonp",
jsonpCallback:'json_response',
success: function(data) {
top.console.debug(data);
$('#location_setter').dialog('close');
},
error: function() {
alert("Error.");
}
});
Run Code Online (Sandbox Code Playgroud)
请求网址是否正确形成:
它给了我正确的json
请指教!
您可以在http://jsfiddle.net/PNad9/上 "玩"它
在R中,使用maps包和gcIntermediate函数,如何在两个国家/地区之间绘制线条?它需要lat-long,但我不确定我应该为各国提供什么样的长期(比如我想在美国和瑞典之间画一条线)
使用Hadley的伟大的ggplot2和他的书(第78-79页),我能够轻松地生成单个等值区域图,使用如下代码:
states.df <- map_data("state")
states.df = subset(states.df,group!=8) # get rid of DC
states.df$st <- state.abb[match(states.df$region,tolower(state.name))] # attach state abbreviations
states.df$value = value[states.df$st]
p = qplot(long, lat, data = states.df, group = group, fill = value, geom = "polygon", xlab="", ylab="", main=main) + opts(axis.text.y=theme_blank(), axis.text.x=theme_blank(), axis.ticks = theme_blank()) + scale_fill_continuous (name)
p2 = p + geom_path(data=states.df, color = "white", alpha = 0.4, fill = NA) + coord_map(project="polyconic")
Run Code Online (Sandbox Code Playgroud)
其中"值"是我正在绘制的州级数据的向量.但是如果我想绘制多个地图,按一些变量(或两个)分组呢?
以下是安德鲁·格尔曼(Andrew Gelman)后来在纽约时报改编的关于美国各地卫生保健意见的情节的一个例子:

我希望能够效仿这个例子:根据两个变量(甚至一个变量)显示网格化的等值线图.所以我不传递值的向量,而是传递一个"long"的数据帧,每个状态有多个条目.
我知道ggplot2可以做到这一点,但我不确定如何.谢谢!
我正在使用Wlet with Leaflet.我正在建立一张美国地图,使用传单的L.GeoJSON用GeoJSON绘制州界.
我可以在地图加载期间设置所有内容,但是我需要能够在绘制地图后调整弹出窗口中的内容.这是我正在做的精简版:
var gjStates = new L.GeoJSON(null, null);
wax.tilejson(url, function(tilejson) {
map = new L.Map('map').addLayer(new wax.leaf.connector(tilejson)).addLayer(gjStates);
gjStates.on("featureparse", function (e) {
if (e.properties && e.properties.name){
pops[e.id.substring(4)] = e.layer.bindPopup('<h4>Hello ' + e.properties.name + '!</h4>');
}
});
for (s in usStateData) {
gjStates.addGeoJSON(usStateData[s]);
}
});
Run Code Online (Sandbox Code Playgroud)
现在,一切都很好,弹出窗口很好,但后来我想改变它,没有办法引用它.我在源代码中看到bindPopup()返回'this',我认为它是L.Popup对象,但结果是其他东西.因此,例如,以下代码将使用活动弹出窗口,而不是特定的L.Path对象(状态)我想要获取的特定窗口.
pops['AK']._map._popup.setContent('I am ALASKA!');
Run Code Online (Sandbox Code Playgroud)
使用firebug挖掘DOM,我还可以看到弹出内容是在内部变量中设置的,我可以更新它.但是,更新这个并不会更新HTML,而且我无法找出阿拉斯加有52的密钥._layers [52]也没有我希望的setContent()方法,如果它是一个L .Popup对象.
gjStates._layers[52]._popupContent = 'I am ALASKA!';
Run Code Online (Sandbox Code Playgroud)
所以,我有点卡住而没找到我需要的东西.在初始渲染后,我有什么方法可以引用并更新地图上特定弹出窗口的内容吗?
我正在编写一个Android应用程序,我在Google地图上有标记,应该更改为我通过GCM收到的位置.我有一个全局静态列表,我将标记与id和位置一起保存.当我收到消息时,我可以在GCMBaseIntentService中更改列表中对象的位置,但是当我想执行以下代码时:
mMarker.setPosition(new LatLng(member.getLatitude(),member.getLongitude()));
Run Code Online (Sandbox Code Playgroud)
我得到以下例外:
01-13 18:52:38.118: E/AndroidRuntime(7605): FATAL EXCEPTION: IntentService[GCMIntentService-1041237551356-1]
01-13 18:52:38.118: E/AndroidRuntime(7605): java.lang.IllegalStateException: Not on the main thread
01-13 18:52:38.118: E/AndroidRuntime(7605): at maps.am.r.b(Unknown Source)
01-13 18:52:38.118: E/AndroidRuntime(7605): at maps.ar.d.b(Unknown Source)
01-13 18:52:38.118: E/AndroidRuntime(7605): at maps.y.ae.addMarker(Unknown Source)
01-13 18:52:38.118: E/AndroidRuntime(7605): at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub.onTransact(IGoogleMapDelegate.java:167)
01-13 18:52:38.118: E/AndroidRuntime(7605): at android.os.Binder.transact(Binder.java:279)
01-13 18:52:38.118: E/AndroidRuntime(7605): at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.addMarker(Unknown Source)
01-13 18:52:38.118: E/AndroidRuntime(7605): at com.google.android.gms.maps.GoogleMap.addMarker(Unknown Source)
01-13 18:52:38.118: E/AndroidRuntime(7605): at com.example.MapViewActivity.showMember(MapViewActivity.java:529)
01-13 18:52:38.118: E/AndroidRuntime(7605): at com.example.MapViewActivity.updateMember(MapViewActivity.java:417)
01-13 18:52:38.118: E/AndroidRuntime(7605): at com.example.MapViewActivity.updateMembers(MapViewActivity.java:410)
01-13 18:52:38.118: E/AndroidRuntime(7605): at com.example.pushnotifications.GCMIntentService.onMessage(GCMIntentService.java:75)
01-13 …Run Code Online (Sandbox Code Playgroud) 我的目的是从ios应用程序打开地图应用程序和方向,我能够打开地图应用程序,但它没有显示方向,我已编写如下代码
NSString *mystr=[[NSString alloc] initWithFormat:@"http://maps.apple.com/maps?saddr=Current+Location&daddr=Newyork"];
NSURL *myurl=[[NSURL alloc] initWithString:mystr];
[[UIApplication sharedApplication] openURL:myurl];
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解释如何将参数传递给这个网址和其他任何一个?