- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在开发一个 bing map 应用程序,但我似乎无法在用户单击图钉时显示信息框。一直在关注SDK,应该是差不多的。这是我所拥有的:
// ***********************************
// Function creates a single pin
// and returns a reference to the pin
function createMapPin(latLong, sName) {
var pinImg = "imagespins/Good.png";
var pin = new Microsoft.Maps.Pushpin(latLong, {
icon: pinImg,
anchor: new Microsoft.Maps.Point(8, 8),
draggable: true,
width: 48,
height: 48
});
pin.title = sName;
pinInfobox = new Microsoft.Maps.Infobox(pin.getLocation(),
{ title: 'My Pushpin',
description: 'This pushpin is located at (0,0).',
visible: false,
offset: new Microsoft.Maps.Point(0, 15)
});
// Add handlers for the pushpin events
Microsoft.Maps.Events.addHandler(pin, 'click', displayInfobox);
// Hide the infobox when the map is moved.
Microsoft.Maps.Events.addHandler(map, 'viewchange', hideInfobox);
map.entities.push(pin);
map.entities.push(pinInfobox);
return pin;
}
function displayInfobox(e) {
pinInfobox.setOptions({ visible: true });
}
function hideInfobox(e) {
pinInfobox.setOptions({ visible: false });
}
图钉成功创建并添加到 map ,当用户点击图钉时,它确实进入了 dispayInfoBox 方法,但消息框似乎没有出现。
非常感谢任何建议。谢谢!
最佳答案
你的代码有效,我试过了,只要你只调用一次createMapPin()
。但是根据您的代码判断,您的意图是多次调用 createMapPin()
,这将导致 infobox
停止像您认为的那样运行。原因是这一行:
pinInfobox = new Microsoft.Maps.Infobox(pin.getLocation(),
{ title: 'My Pushpin',
description: 'This pushpin is located at (0,0).',
visible: false,
offset: new Microsoft.Maps.Point(0, 15)
});
由于您没有通过 var
关键字将 pinInfobox
声明为局部变量,因此它隐式声明为全局变量。我不认为这是你的意图,因为一旦你再次调用 createMapPin()
,pinInfobox
因为它是一个全局变量,将被覆盖。所以实际上,即使您继续创建新的信息框,它也只有一个实例,并且它只是不断地被分配新的值。因此,如果您单击图钉,一个信息框可能会在屏幕外的某个地方弹出,您看不到它。我相信您的意图是让每个图钉关联一个信息框?为此,您需要将信息框声明为局部变量,如下所示:
var pinInfobox = new Microsoft.Maps.Infobox(pin.getLocation(),
{ title: 'My Pushpin',
description: 'This pushpin is located at (0,0).',
visible: false,
offset: new Microsoft.Maps.Point(0, 15)
});
您还需要修改事件处理程序以与本地版本的信息框对象交互,而不仅仅是单个全局变量。最简单的方法是在 createMapPin()
函数的范围内将事件处理程序声明为匿名函数,并使用函数绑定(bind)覆盖 this 关键字的含义:
Microsoft.Maps.Events.addHandler(pin, 'click', function (e) {
this.setOptions({ visible: true });
} .bind(pinInfobox));
Microsoft.Maps.Events.addHandler(map, 'viewchange', function(e) {
this.setOptions({ visible: false });
}.bind(pinInfobox));
这是您更新后的代码:
function createMapPin(latLong, sName) {
var pinImg = "imagespins/Good.png";
var pin = new Microsoft.Maps.Pushpin(latLong, {
icon: pinImg,
anchor: new Microsoft.Maps.Point(8, 8),
draggable: true,
width: 48,
height: 48
});
pin.title = sName;
var pinInfobox = new Microsoft.Maps.Infobox(pin.getLocation(),
{
title: 'My Pushpin',
description: 'This pushpin is located at (0,0).',
visible: false,
offset: new Microsoft.Maps.Point(0, 15)
});
// Add handlers for the pushpin events
Microsoft.Maps.Events.addHandler(pin, 'click', function(e) {
this.setOptions({ visible: true });
}.bind(pinInfobox));
// Hide the infobox when the map is moved.
Microsoft.Maps.Events.addHandler(map, 'viewchange', function(e) {
this.setOptions({ visible: false });
}.bind(pinInfobox));
map.entities.push(pin);
map.entities.push(pinInfobox);
return pin;
}
关于javascript - Bing map 的信息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10048259/
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
有什么方法可以以编程方式获取 Bing 背景图像吗? Bing的API似乎没有提供这样的功能,也许还有其他方法? 最佳答案 我认为最好的方法是通过 AJAX 调用来模仿他们自己的做法。 他们调用此 U
我正在开发一个带有必应 map 的网络应用程序。我使用这种方法来更改航点图钉图标: directionsManager.setRenderOptions({ itineraryCont
我正在尝试使用单独的信息框添加多个图钉。这意味着每个图钉都会有自己的信息框,其中包含自己的信息。里面有一个循环 latlng = new Microsoft.Maps.Location(latitud
如何通过 Ajax API 将多个图钉添加到 Bing map v7..? 它们可以从数组、列表、json 或其他任何地方加载。 有人可以提供一个小例子吗?谢谢 最佳答案 您可以使用EntityCol
我正在尝试将 3d 图像添加到 Bing map ,但是我的工作电脑没有互联网连接,我想知道如何在没有互联网可用的情况下向 Bing map 添加内容。有什么方法可以下载 bing map 示例,让我
我想使用 bing search api 来获取给定查询的搜索结果计数,但是,Bing API 似乎没有返回任何包含搜索结果计数的字段。 我应该指定一些选项来请求 URL 吗?或者 Bing API
我在网站上申请了 bingmaps ajax controll v7。我面前有一个任务:应用生产 URL。整个文档使用的引用 map :http://ecn.dev.virtualearth.net/
如何去掉 Bing map 顶部的导航栏?该栏有道路和自动选择器以及鸟瞰和空中选择器。 最佳答案 Microsoft.Maps.loadModule('Microsoft.Maps.Themes.Bi
如果您在同一地理位置有“伦敦”上的 2 个图钉,API 中是否有任何内容可以将它们分开以使它们都可见? 我只能找到有关具有 PreventIconCollisions 功能的旧 map 点 API 的
我有一个带有图钉和簇的 Bing map 。 我注意到此组合中存在性能问题和错误。我已经设置了一个 demo使用 official docs 中的代码. 第一个问题:缩放后 Pin 图点击处理程序不再
我想做的是通过 ajax API 显示以英国邮政编码为中心的小型 bing 生成 map 。我相信这是可能的;我在 Bing map 文档中找不到如何将英国邮政编码转换为可以插入 map Ajax 控
鉴于 Bing API 文档主要由一个错误缠身的两页 Word 文档组成,我无法在网上找到答案。反复试验产生了不一致的结果,考虑到查询需要花钱,我宁愿不再猜测和检查。 新的“Azure 市场”Bing
如何将“你在这里”标记添加到 Bing map 控件?在手机上,这表示为正方形内的圆圈,然后有一个外圆圈表示位置精度。 看起来你可以用图钉和 polgon 来做,但我希望有一种更简单/更好的方法 最佳
有人知道为什么普通 bing.com 和 bing api 2.2 的搜索结果不同吗? 例子: http://api.search.live.net/xml.aspx?Appid=yourid&que
鸟瞰图似乎在 V8 中不再可用。 谁能确认事实确实如此,或者在新版本中是否还有任何方法可以继续使用鸟瞰图? 微软关于这方面的文档很差,所以我只是把各种来源的信息拼凑在一起。 例如: 1. 在他们的 M
我正在使用 Microsoft.Maps API(AJAX control v. 7)。 我想显示地址的 pin。 当我使用: var loc = new Microsoft.Maps.Locatio
我找到了 link text对于 Google,但我想知道 Bing 是否有等价物? 最佳答案 谷歌搜索“bing static maps api”时的第二个链接... http://social.m
我想开始将 Bing 用于一个项目,其中包括计算点之间的最短路线,以及在 map 上绘制路线等。 但是,除了 Bing Maps,还有 VirtualEarth 和 MapPoint。所有这些产品如何
我已经 checkout their page on error handling但它所拥有的只是对请求可能返回的状态代码的描述。如果我超过每天允许的请求数量,bing 是否提供信息一将返回什么? 最
我是一名优秀的程序员,十分优秀!