Je fais des recherches sur l'utilisation de Bing Maps pour une application proposée et je suis tombé sur un mur. L'idée générale est que je veux montrer les emplacements de divers articles que nous avons à distance X d'un endroit. Le point de départ est la carte US et nous utilisons le clic de l'utilisateur pour obtenir lat/long, et l'utiliser pour choisir la ville la plus proche. Nous allons centrer la carte là-bas, puis charger en pushpins pour chacun de nos articles dans la distance prescrite.Pourquoi VEMap.Find de Bing Maps échouerait-il silencieusement?
Pour la construction d'une démo, j'ai écrit ce qui suit. Le problème que je rencontre est que l'appel à landMap.Find dans plotZipcode échoue silencieusement. Il n'y a pas de message d'erreur et la sortie de la console avant et après l'affichage de landMap.Find comme prévu, mais plotPushpin n'est jamais exécuté.
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script charset="UTF-8" type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&mkt=en-us"></script>
<script type="text/javascript">
var landMap = null;
function getLatLong(evt) {
var latLong = landMap.PixelToLatLong(new VEPixel(evt.mapX, evt.mapY));
// This looks up the nearest city from the lat/long
// and returns something like "EAGLE CREEK, IN"
$.ajax({
url: '/cfc/bing.cfc',
data: {
method: 'findCity',
Latitude: latLong.Latitude,
Longitude: latLong.Longitude
},
success: plotZipcode
});
}
function plotPushpin(layer, results, places, expectMore, errorMessage) {
console.log('Executing plotPushpin...');
if (landMap && places && places.length >= 1) {
var pushpin = new VEShape(VEShapeType.Pushpin, places[0].LatLong);
pushpin.SetTitle('Available Repos Near '+places[0].Name);
landMap.AddShape(pushpin);
}
}
function plotZipcode(data, textStatus, XMLHttpRequest) {
console.log('Executing plotZipcode...');
if (landMap && data.length > 0) {
console.log(data);
landMap.Clear();
console.log('Calling VEMap.Find...');
landMap.Find(null, data, null, null, null, null, null, null, null, null, plotPushpin);
//landMap.Find(null, data); // This doesn't work either.'
console.log('Called VEMap.Find!');
}
}
$(document).ready(function() {
landMap = new VEMap('landLocation');
landMap.LoadMap();
landMap.ShowDisambiguationDialog(false);
landMap.AttachEvent('onclick', getLatLong);
});
</script>
<div id='landLocation' style="position:absolute; width:600px; height:400px;"></div>
La chose est particulièrement frustrant que si j'utilise Firebug pour exécuter manuellement ce qui suit, il se comporte exactement comme prévu:
landMap.Find(null, "EAGLE CREEK, IN", null, null, null, null, null, null, null, null, plotPushpin);
Toute idée des raisons pour lesquelles VEMap.Find fait tout simplement rien dans mon Le rappel AJAX serait grandement apprécié.
Spécifiez-vous vos informations d'identification à l'aide de la méthode VEMap.SetCredentials()? - http://msdn.microsoft.com/fr-fr/library/ee692182.aspx –