2013-03-12 5 views
1

J'utilise des cartes Bing pour afficher des marqueurs sur la carte.Afficher des marqueurs dans une carte Bing Polygon

Maintenant j'ajoute une fonctionnalité où je permets à l'utilisateur de dessiner un cercle autour de n'importe quel marqueur de son choix et de lui laisser spécifier le rayon du cercle en kilomètres.

Je veux que le cercle (polygone) contienne des marqueurs dans les limites de latitude/longitude de ce cercle et les marqueurs à l'extérieur du cercle pour disparaître.

Comment puis-je y parvenir?

Répondre

0

Vous n'avez fourni aucun code. Cependant, j'ai été impliqué dans un projet similaire, donc j'ai une idée de ce dont vous parlez. SInce que vous cherchez un polygone personnalisé, vous pouvez jeter un oeil à ce link.

Une autre façon de le faire serait aux coordonnées x, y du marqueur et en utilisant Javascript pour dessiner un cercle autour de la carte.

CE JAVASCRIPT DOIT AIDER

function drawCircle(radius, origin) { 
    var RadPerDeg = Math.PI/180; 
    var earthRadius = 3959; 
    var lat = origin.latitude * RadPerDeg; 
    var lon = origin.longitude * RadPerDeg; 
    var locs = new Array(); 
    var AngDist = parseFloat(radius)/earthRadius; 
    for (x = 0; x <= 360; x++) { //making a 360-sided polygon 
     var pLatitude, pLongitude; 
     // With a nice, flat earth we could just say p2.Longitude = lon * sin(brng) and p2.Latitude = lat * cos(brng) 
     // But it ain't, so we can't. See http://www.movable-type.co.uk/scripts/latlong.html 
     brng = x * RadPerDeg; 
     pLatitude = Math.asin(Math.sin(lat) * Math.cos(AngDist) + Math.cos(lat) * Math.sin(AngDist) * Math.cos(brng)); //still in radians 
     pLongitude = lon + Math.atan2(Math.sin(brng) * Math.sin(AngDist) * Math.cos(lat), Math.cos(AngDist) - Math.sin(lat) * Math.sin(pLatitude)); 
     pLatitude = pLatitude/RadPerDeg; 
     pLongitude = pLongitude/RadPerDeg; 
     locs.push(new MM.Location(pLatitude, pLongitude)); 
    }; 
    circle = new MM.Polyline(locs, { visible: true, strokeThickness: 2, strokeDashArray: "1", strokeColor: new MM.Color(200, 0, 0, 200, 0) }); 
    map.entities.push(circle); 
}; 
+0

Je suis de retour sur le SO après une longue période. J'ai résolu mon problème. La solution était similaire à celle que vous avez fournie. –

Questions connexes