procedure TBaiduMapMarker.Changed;
var
S: String;
ASavePoint: Integer;
const
STempate: String = 'if(typeof(%MarkerName%) != ''undefined'')'#13#10 +
// 定义了就直接设置属性
' {'#13#10 +
' %MarkerName%.setPosition(new BMap.Point(%Pos_Lng%,%Pos_Lat%));'#13#10 +
// 位置
' %MarkerName%.setAnimation(%Animation%);'#13#10 + // 动画
' }'#13#10 + //
'else'#13#10 + // 未定义就添加
' {'#13#10 +
' %MarkerName%=new BMap.Marker(new BMap.Point(%Pos_Lng%,%Pos_Lat%));'#13#10
+ // 位置
' map.addOverlay(%MarkerName%);'#13#10 + // 添加图层
' %MarkerName%.setAnimation(%Animation%);'#13#10 + // 添加完成
' }' + 'if(%Dragable%)'#13#10 + // 需要拖拽
' %MarkerName%.enableDragging();'#13#10 + // 启用
'else'#13#10 + //
' %MarkerName%.disableDragging();'#13#10; // 禁用
begin
if not Owner.JSVars.Defined[Name] then
Owner.JSVars.ExecuteScript('var ' + Name);
with (Owner as TBaiduMapProvider).FMacros do
begin
ASavePoint := SavePoint;
try
Push('Pos_Lat', FloatToStr(Position.Lat));
Push('Pos_Lng', FloatToStr(Position.Lng));
Push('MarkerName', Name);
if Animate then
Push('Animation', 'BMAP_ANIMATION_BOUNCE')
else
Push('Animation', 'null');
if Dragable then
Push('Dragable', 'true')
else
Push('Dragable', 'false');
S := Replace(STempate, '%', '%');
Owner.JSVars.ExecuteScript(S);
finally
Restore(ASavePoint);
end;
end;
end;