wie

2013-03-15 5 views
5

twitter Bootstrap popover für dynamische Inhalte zu verwenden, möchte ich auf popover google map zeigenwie

Aber die popover ausfällt Karte ändern

funktioniert nur, wenn die Karte fixiert ist

Mein Code:

$(function(){ 

// getmap function from http://stackoverflow.com/questions/10545768/google-map-in-twitter-bootstrap-popver 
var getMap = function(opts) { 
    var src = "http://maps.googleapis.com/maps/api/staticmap?", 
    params = $.extend({ 
    center: 'New York, NY', 
    zoom: 14, 
    size: '512x512', 
    maptype: 'roadmap', 
    sensor: false 
    }, opts), 
    query = []; 

    $.each(params, function(k, v) { 
query.push(k + '=' + encodeURIComponent(v)); 
    }); 

    src += query.join('&'); 
    return '<img src="' + src + '" />'; 
} 



$('.map').click(function(){ 
    location = $(this).text(); 
    $("#map").html(getMap({center: location})); 
    }); 


$('.map').popover({trigger:'click',placement:'left',html:true,content:function(){ 
    return $("#map").html(); 
    }});  

    }); 

Mein Problem mit dieser Funktion:

$('.map').click(function(){...}); 

Mit einem Klick auf dem Link (.map), weil die #map geändert wird, ist der popover gebrochen und nicht

Danke

Antwort

17

ich Sie es in zwei separaten tun müssen, um nicht denken funktioniert Schritte (klicken Sie dann auf Popover), noch brauchen Sie das Div, es sei denn, es gibt einen Grund für das, was Sie nicht erwähnt haben. Dies funktioniert für mich:

JavaScript:

$('.map').popover({trigger:'click',placement:'left',html:true,content:function(){ 
    return getMap({center: $(this).text()}) 
    }});  
}); 

Sie können dann entfernen Sie die center: 'New York, NY', Linie von Ihrem getMap params.

HTML:

<a href="#" class="map">New York, NY</a> 

Wenn Sie die #map div wurden unter Verwendung der popover größer zu machen, sondern nur die CSS der stattdessen popover ändern, indem Sie so etwas wie tun:

.popover { width: 512px; height: 512px; } 

würde ich empfehlen, einen spezifischeren Selektor dafür zu verwenden, andernfalls wirkt sich dies auf Popover an anderen Stellen auf Ihrer Site aus.

+0

Ich habe diese Methode schon ausprobiert: '' $ ('. Map'). Popover ({..., inhalt: function() { return getMap ({center: $ (this) .text()}) }}); }); 'funktioniert aber nur, wenn die Map fest ist, getMap ({center: $ (this) .text()}) bedeutet, dass sich der Inhalt mit jedem Klick ändert –

+0

Dieser Code funktioniert gut, Das Problem hatte ich mit der Location-Variable !! –

+1

Ja, der Standort ist keine gute Variable für die Verwendung mit JavaScript, da einige Browser dies so interpretieren, als würden Sie zu dieser URL wechseln. Ich bin froh, dass es funktioniert hat. – frostyterrier